aboutsummaryrefslogtreecommitdiff
path: root/cmd/sigsum-debug/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/sigsum-debug/main.go')
-rw-r--r--cmd/sigsum-debug/main.go70
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, "")
-}