diff options
Diffstat (limited to 'cmd/sigsum-debug/main.go')
-rw-r--r-- | cmd/sigsum-debug/main.go | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/cmd/sigsum-debug/main.go b/cmd/sigsum-debug/main.go new file mode 100644 index 0000000..1d9e769 --- /dev/null +++ b/cmd/sigsum-debug/main.go @@ -0,0 +1,92 @@ +// package main provides a tool named sigsum-debug. +// +// Install as follows: +// +// $ go install -ldflags="-X 'main.someVersion=git commit $(git rev-list -1 HEAD)'" +// +// Usage: +// +// $ sigsum-debug help +// +package main + +import ( + "flag" + "fmt" + "log" + "os" +) + +const usage = `sigsum-debug version %s + +Usage: + sigsum-debug help + Outputs a usage message. + + sigsum-debug genkey + Outputs a new private key. + + sigsum-debug pubkey + Reads a private key from stdin and output its public key. + + sigsum-debug hashkey + Reads a public key from stdin and output its key hash. +` + +var ( + someVersion = "unknown" +) + +func main() { + log.SetFlags(0) + + var err error + switch cmd := parseCommand(); cmd.Name() { + case "help": + cmd.Usage() + case "genkey": + err = CmdGenKey() + case "pubkey": + err = CmdPubKey() + case "hashkey": + err = CmdHashKey() + default: + err = fmt.Errorf("invalid command %q, try %q", cmd.Name(), "sigsum help") + } + + if err != nil { + log.Printf("%s", err) + os.Exit(1) + } +} + +func parseCommand() *flag.FlagSet { + args := os.Args + if len(args) < 2 { + args = append(args, "") + } + + fs := flag.NewFlagSet(args[1], flag.ExitOnError) + fs.Usage = func() { + log.Printf(usage, someVersion) + } + registerOptions(fs) + fs.Parse(args[2:]) + return fs +} + +func registerOptions(fs *flag.FlagSet) { + switch cmd := fs.Name(); cmd { + default: + } +} + +func registerStringOption(fs *flag.FlagSet, opt *string, short, long, value string) { + fs.StringVar(opt, short, value, "") + fs.StringVar(opt, long, value, "") +} + +func registerUint64Option(fs *flag.FlagSet, opt *uint64, short, long string, value uint64) { + fs.Uint64Var(opt, short, value, "") + fs.Uint64Var(opt, long, value, "") +} |