main: show the command usage when a valid one is used with a bad or -h flag
diff --git a/help.go b/help.go
index 218a074..a2669a1 100644
--- a/help.go
+++ b/help.go
@@ -109,8 +109,3 @@
tmpl(bw, usageTemplate, commands)
bw.Flush()
}
-
-func usage() {
- printUsage(os.Stderr)
- os.Exit(2)
-}
diff --git a/main.go b/main.go
index 93c8ef8..3f435b8 100644
--- a/main.go
+++ b/main.go
@@ -2,15 +2,16 @@
import (
"flag"
+ "fmt"
"log"
"os"
"path/filepath"
)
-var fs = flag.NewFlagSet(os.Args[0], flag.ExitOnError)
+var fs = flag.NewFlagSet(os.Args[0], flag.ContinueOnError)
func init() {
- fs.Usage = usage
+ fs.Usage = func() {}
}
type Command struct {
@@ -54,17 +55,24 @@
}
if err := fs.Parse(args[1:]); err != nil {
- log.Fatalf("could not parse flags: %v", err)
+ if err == flag.ErrHelp {
+ help(args[:1])
+ os.Exit(0)
+ }
+ fmt.Fprint(os.Stderr, "\n")
+ help(args[:1])
+ os.Exit(3)
}
- args = fs.Args() // reset args to the leftovers from fs.Parse
- if err := command.Run(args); err != nil {
+ if err := command.Run(fs.Args()); err != nil {
log.Fatalf("command %q failed: %v", command.Name, err)
}
return
}
}
- log.Fatalf("unknown command %q ", args[0])
+ fmt.Fprintf(os.Stderr, "unknown command: %q\n\n", args[0])
+ printUsage(os.Stderr)
+ os.Exit(3)
}
const manifestfile = "manifest"