diff options
| author | Adrien Hopkins <adrien.p.hopkins@gmail.com> | 2023-08-30 16:46:23 -0500 |
|---|---|---|
| committer | Adrien Hopkins <adrien.p.hopkins@gmail.com> | 2023-08-30 20:02:26 -0500 |
| commit | 0f698d42907bc06f469ae3311433bcc741b8bd9b (patch) | |
| tree | 8357233206a1c8603f247d3328b27cb161607b5f | |
| parent | 32320351ec98bbdf526d1587d073e4f3a382f2d5 (diff) | |
Move argument parsing to separate file/function
| -rw-r--r-- | args.go | 32 | ||||
| -rw-r--r-- | radix_info.go | 18 |
2 files changed, 37 insertions, 13 deletions
@@ -0,0 +1,32 @@ +package main + +import ( + "errors" + "fmt" + "os" + "strconv" +) + +// The arguments to this program +type args struct { + Radix uint +} + +func parseArgs() (args, error) { + if len(os.Args) == 2 { + if radix, err := strconv.ParseUint(os.Args[1], 0, 0); err == nil { + if radix > 1 { + return args{uint(radix)}, nil + } else { + return args{}, errors.New("Radix must be an integer above 1.") + } + } else { + return args{}, fmt.Errorf( + "Argument must be an integer above 1 [%w].", err) + } + } else if len(os.Args) < 2 { + return args{}, errors.New("Please provide an argument (radix to study).") + } else { + return args{}, errors.New("Too many arguments provided.") + } +} diff --git a/radix_info.go b/radix_info.go index 32e1e40..386c050 100644 --- a/radix_info.go +++ b/radix_info.go @@ -3,22 +3,14 @@ package main import ( "fmt" "os" - "strconv" ) func main() { - if len(os.Args) > 1 { - if n, err := strconv.ParseUint(os.Args[1], 0, 0); err == nil { - if n > 1 { - factorInfo := GetFactorInfo(uint(n)) - factorInfo.WriteTo(os.Stdout) - } else { - fmt.Println("Argument must be an integer above 1.") - } - } else { - fmt.Printf("Argument must be an integer above 1 [%v].\n", err) - } + args, err := parseArgs() + if err == nil { + factorInfo := GetFactorInfo(args.Radix) + factorInfo.WriteTo(os.Stdout) } else { - fmt.Println("Please provide an argument (radix to study).") + fmt.Fprintln(os.Stderr, err) } } |
