Skip to content

Commit

Permalink
Refactor to get the complexity score down
Browse files Browse the repository at this point in the history
  • Loading branch information
bodgit committed May 19, 2021
1 parent d6af90b commit b42712c
Showing 1 changed file with 49 additions and 38 deletions.
87 changes: 49 additions & 38 deletions cmd/psx/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ import (
"github.com/urfave/cli/v2"
)

const maxChannels = 8

var (
version = "dev"
commit = "none"
Expand All @@ -26,6 +28,52 @@ func init() {
}
}

func saveMemoryCard(base, code string, mc *psx.MemoryCard) error {
directory := filepath.Join(base, code)
dir:
fi, err := os.Stat(directory)
if err != nil {
if os.IsNotExist(err) {
if err := os.Mkdir(directory, os.ModePerm|os.ModeDir); err != nil {
return err
}
goto dir
}
return err
}
if !fi.IsDir() {
return errors.New("not a directory")
}

var i int
var target string
for i = 1; i <= maxChannels; i++ {
target = filepath.Join(directory, fmt.Sprintf("%s-%d.mcd", code, i))
fi, err = os.Stat(target)
if err != nil {
if os.IsNotExist(err) {
break
}
return err
}
}

if i > maxChannels {
return errors.New("no free memory card channels")
}

b, err := mc.MarshalBinary()
if err != nil {
return err
}

if err := ioutil.WriteFile(target, b, 0666); err != nil {
return err
}

return nil
}

func splitMemoryCard(base string, smc *psx.MemoryCard) error {
// Create list of unique product codes
codes := make(map[string]struct{})
Expand Down Expand Up @@ -69,44 +117,7 @@ func splitMemoryCard(base string, smc *psx.MemoryCard) error {
}
}

directory := filepath.Join(base, code)
dir:
fi, err := os.Stat(directory)
if err != nil {
if os.IsNotExist(err) {
if err := os.Mkdir(directory, os.ModePerm|os.ModeDir); err != nil {
return err
}
goto dir
}
return err
}
if !fi.IsDir() {
return errors.New("not a directory")
}

var target string
for i = 1; i <= 8; i++ {
target = filepath.Join(directory, fmt.Sprintf("%s-%d.mcd", code, i))
fi, err = os.Stat(target)
if err != nil {
if os.IsNotExist(err) {
break
}
return err
}
}

if i > 8 {
return errors.New("no free memory card channels")
}

b, err := tmc.MarshalBinary()
if err != nil {
return err
}

if err := ioutil.WriteFile(target, b, 0666); err != nil {
if err := saveMemoryCard(base, code, tmc); err != nil {
return err
}
}
Expand Down

0 comments on commit b42712c

Please sign in to comment.