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 /args.go | |
| parent | 32320351ec98bbdf526d1587d073e4f3a382f2d5 (diff) | |
Move argument parsing to separate file/function
Diffstat (limited to 'args.go')
| -rw-r--r-- | args.go | 32 |
1 files changed, 32 insertions, 0 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.") + } +} |
