From 047500ae23a12469ce3e458c6a58a642716041b7 Mon Sep 17 00:00:00 2001 From: Rasmus Dahlberg Date: Sat, 23 Apr 2022 18:19:25 +0200 Subject: add drafty tool named sigsum-debug Meant to be used for debugging and tests only. Replaces cmd/tmp/* in log-go, expect for the DNS command which is redundant. Use `dig -t txt $domain_hint` to debug domain hints. --- internal/options/options.go | 65 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 internal/options/options.go (limited to 'internal/options') diff --git a/internal/options/options.go b/internal/options/options.go new file mode 100644 index 0000000..cc8e02a --- /dev/null +++ b/internal/options/options.go @@ -0,0 +1,65 @@ +package options + +import ( + "flag" + "fmt" +) + +const ( + DefaultString = "default string" + DefaultUint64 = 18446744073709551615 +) + +// New initializes a flag set using the provided arguments. +// +// - args should start with the (sub)command's name +// - usage is a function that prints a usage message +// - set is a function that sets the command's flag arguments +// +func New(args []string, usage func(), set func(*flag.FlagSet)) *flag.FlagSet { + if len(args) == 0 { + args = append(args, "") + } + + fs := flag.NewFlagSet(args[0], flag.ExitOnError) + fs.Usage = func() { + usage() + } + set(fs) + fs.Parse(args[1:]) + return fs +} + +// AddString adds a string option to a flag set +func AddString(fs *flag.FlagSet, opt *string, short, long, value string) { + fs.StringVar(opt, short, value, "") + fs.StringVar(opt, long, value, "") +} + +// AdUint64 adds an uint64 option to a flag set +func AddUint64(fs *flag.FlagSet, opt *uint64, short, long string, value uint64) { + fs.Uint64Var(opt, short, value, "") + fs.Uint64Var(opt, long, value, "") +} + +// CheckString checks that a string option has a non-default value +func CheckString(optionName, value string, err error) error { + if err != nil { + return err + } + if value == DefaultString { + return fmt.Errorf("%s is a required option", optionName) + } + return nil +} + +// CheckUint checks that an uint64 option has a non-default value +func CheckUint64(optionName string, value uint64, err error) error { + if err != nil { + return err + } + if value == DefaultUint64 { + return fmt.Errorf("%s is a required option", optionName) + } + return nil +} -- cgit v1.2.3