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