From 0f698d42907bc06f469ae3311433bcc741b8bd9b Mon Sep 17 00:00:00 2001 From: Adrien Hopkins Date: Wed, 30 Aug 2023 16:46:23 -0500 Subject: Move argument parsing to separate file/function --- args.go | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 args.go (limited to 'args.go') diff --git a/args.go b/args.go new file mode 100644 index 0000000..adcaa6b --- /dev/null +++ b/args.go @@ -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.") + } +} -- cgit v1.2.3