diff options
Diffstat (limited to 'cmd/sigsum/main.go')
-rw-r--r-- | cmd/sigsum/main.go | 65 |
1 files changed, 27 insertions, 38 deletions
diff --git a/cmd/sigsum/main.go b/cmd/sigsum/main.go index 146dadb..5c39f51 100644 --- a/cmd/sigsum/main.go +++ b/cmd/sigsum/main.go @@ -1,12 +1,13 @@ -// package main provides a tool named `sigsum`. +// package main provides a tool named sigsum. // // Build as follows: // // $ go build -ldflags="-X 'main.someVersion=git commit $(git rev-list -1 HEAD)'" +// $ mv sigsum $GOPATH/bin/ // -// Install as follows: +// Usage: // -// $ go install -ldflags="-X 'main.someVersion=git commit $(git rev-list -1 HEAD)'" +// $ sigsum help // package main @@ -16,6 +17,12 @@ import ( "log" "os" + "git.sigsum.org/sigsum-tools-go/cmd/sigsum/bundle" + "git.sigsum.org/sigsum-tools-go/cmd/sigsum/format" + "git.sigsum.org/sigsum-tools-go/cmd/sigsum/namespace" + "git.sigsum.org/sigsum-tools-go/cmd/sigsum/verify" + + "git.sigsum.org/sigsum-tools-go/internal/options" "git.sigsum.org/sigsum-tools-go/pkg/policy" ) @@ -48,10 +55,11 @@ Signatures must be located at $FILE.{sig,minisig}, depending on -t TYPE. ` var ( - optBundleType, optBundleKey, optBundleDomainHint string - optVerifyType, optVerifyKey string + optType string + optDomainHint string + optPublicKey string - someVersion = "unknown" + someVersion = "devel" ) func main() { @@ -59,17 +67,17 @@ func main() { var err error var defaultPolicy policy.DefaultPolicy - switch cmd := parseCommand(); cmd.Name() { + switch cmd := options.Parse(printUsage, setOptions); cmd.Name() { case "help": cmd.Usage() case "verify": - err = cmdVerify(cmd.Args(), &defaultPolicy, optVerifyType, optVerifyKey) + err = verify.Main(cmd.Args(), &defaultPolicy, optType, optPublicKey) case "bundle": - err = cmdBundle(cmd.Args(), &defaultPolicy, optBundleType, optBundleKey, optBundleDomainHint) + err = bundle.Main(cmd.Args(), &defaultPolicy, optType, optPublicKey, optDomainHint) case "format": - err = cmdFormat(cmd.Args(), &defaultPolicy) + err = format.Main(cmd.Args(), &defaultPolicy) case "namespace": - err = cmdNamespace(cmd.Args(), &defaultPolicy) + err = namespace.Main(cmd.Args(), &defaultPolicy) default: err = fmt.Errorf("invalid command %q, try %q", cmd.Name(), "sigsum help") } @@ -80,37 +88,18 @@ func main() { } } -func parseCommand() (fs *flag.FlagSet) { - args := os.Args - if len(args) < 2 { - args = append(args, "") - } - defer func() { - registerOptions(fs) - fs.Usage = func() { - log.Printf(usage, someVersion) - } - fs.Parse(args) - }() - - fs = flag.NewFlagSet(args[1], flag.ExitOnError) - args = args[2:] - return +func printUsage() { + log.Printf(usage, someVersion) } -func registerOptions(fs *flag.FlagSet) { +func setOptions(fs *flag.FlagSet) { switch cmd := fs.Name(); cmd { case "verify": - registerStringOption(fs, &optVerifyType, "t", "type", "") - registerStringOption(fs, &optVerifyKey, "k", "key", "") + options.AddString(fs, &optType, "t", "type", "") + options.AddString(fs, &optPublicKey, "k", "key", "") case "bundle": - registerStringOption(fs, &optBundleType, "t", "type", "") - registerStringOption(fs, &optBundleKey, "k", "key", "") - registerStringOption(fs, &optBundleDomainHint, "d", "domain-hint", "") + options.AddString(fs, &optType, "t", "type", "") + options.AddString(fs, &optPublicKey, "k", "key", "") + options.AddString(fs, &optDomainHint, "d", "domain-hint", "") } } - -func registerStringOption(fs *flag.FlagSet, opt *string, short, long, value string) { - fs.StringVar(opt, short, value, "") - fs.StringVar(opt, long, value, "") -} |