diff options
Diffstat (limited to 'cmd/sigsum-debug/main.go')
-rw-r--r-- | cmd/sigsum-debug/main.go | 70 |
1 files changed, 29 insertions, 41 deletions
diff --git a/cmd/sigsum-debug/main.go b/cmd/sigsum-debug/main.go index 8b49e0b..2bc05de 100644 --- a/cmd/sigsum-debug/main.go +++ b/cmd/sigsum-debug/main.go @@ -1,8 +1,9 @@ // package main provides a tool named sigsum-debug. // -// Install as follows: +// Build as follows: // -// $ go install -ldflags="-X 'main.someVersion=git commit $(git rev-list -1 HEAD)'" +// $ go build -ldflags="-X 'main.someVersion=git commit $(git rev-list -1 HEAD)'" +// $ mv sigsum-debug $GOPATH/bin/ // // Usage: // @@ -15,6 +16,13 @@ import ( "fmt" "log" "os" + + "git.sigsum.org/sigsum-tools-go/cmd/sigsum-debug/genkey" + "git.sigsum.org/sigsum-tools-go/cmd/sigsum-debug/hashkey" + "git.sigsum.org/sigsum-tools-go/cmd/sigsum-debug/hashleaf" + "git.sigsum.org/sigsum-tools-go/cmd/sigsum-debug/pubkey" + "git.sigsum.org/sigsum-tools-go/cmd/sigsum-debug/sign" + "git.sigsum.org/sigsum-tools-go/internal/options" ) const usage = `sigsum-debug version %s @@ -49,29 +57,31 @@ Usage: ` var ( - optPriv, optPub string + optPriv string + optPub string optShardHint uint64 - someVersion = "unknown" + someVersion = "devel" ) func main() { log.SetFlags(0) var err error - switch cmd := parseCommand(); cmd.Name() { + cmd := options.Parse(printUsage, setOptions) + switch cmd.Name() { case "help": cmd.Usage() case "genkey": - err = CmdGenKey() + err = genkey.Main(cmd.Args()) case "pubkey": - err = CmdPubKey() + err = pubkey.Main(cmd.Args()) case "hashkey": - err = CmdHashKey() + err = hashkey.Main(cmd.Args()) case "hashleaf": - err = CmdHashLeaf(optPriv, optShardHint) + err = hashleaf.Main(cmd.Args(), optPriv, optShardHint) case "sign": - err = CmdSign(optPriv, optShardHint) + err = sign.Main(cmd.Args(), optPriv, optShardHint) case "cosign": err = fmt.Errorf("TODO") default: @@ -84,42 +94,20 @@ func main() { } } -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 printUsage() { + log.Printf(usage, someVersion) } -func registerOptions(fs *flag.FlagSet) { +func setOptions(fs *flag.FlagSet) { switch cmd := fs.Name(); cmd { - default: case "hashleaf": - registerStringOption(fs, &optPriv, "k", "key", "") - registerUint64Option(fs, &optShardHint, "s", "shard-hint", 0) + options.AddString(fs, &optPriv, "k", "key", "") + options.AddUint64(fs, &optShardHint, "s", "shard-hint", 0) case "sign": - registerStringOption(fs, &optPriv, "k", "key", "") - registerUint64Option(fs, &optShardHint, "s", "shard-hint", 0) + options.AddString(fs, &optPriv, "k", "key", "") + options.AddUint64(fs, &optShardHint, "s", "shard-hint", 0) case "cosign": - registerStringOption(fs, &optPriv, "w", "--witness-priv", "") - registerStringOption(fs, &optPub, "l", "--log-pub", "") + options.AddString(fs, &optPriv, "w", "--witness-priv", "") + options.AddString(fs, &optPub, "l", "--log-pub", "") } } - -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, "") -} |