Clean up usage

* Use raw strings.
* Hook usage into flag.
* Print banner to stderr as flag.PrintDefaults does.
* Use the cayley usage rather than the flag ussage when command is
  unknown.
* Simplify args handling.
This commit is contained in:
kortschak 2014-08-22 16:27:52 +09:30
parent cce0f88803
commit 318edfc3c7

View file

@ -63,33 +63,36 @@ var (
VERSION string VERSION string
) )
func Usage() { func usage() {
fmt.Println("Cayley is a graph store and graph query layer.") fmt.Fprintln(os.Stderr, `Cayley is a graph store and graph query layer.
fmt.Println("\nUsage:")
fmt.Println(" cayley COMMAND [flags]") Usage:
fmt.Println("\nCommands:") cayley COMMAND [flags]
fmt.Println(" init Create an empty database.")
fmt.Println(" load Bulk-load a triple file into the database.") Commands:
fmt.Println(" http Serve an HTTP endpoint on the given host and port.") init Create an empty database.
fmt.Println(" repl Drop into a REPL of the given query language.") load Bulk-load a triple file into the database.
fmt.Println(" version Version information.") http Serve an HTTP endpoint on the given host and port.
fmt.Println("\nFlags:") repl Drop into a REPL of the given query language.
flag.Parse() version Version information.
Flags:`)
flag.PrintDefaults() flag.PrintDefaults()
} }
func init() {
flag.Usage = usage
}
func main() { func main() {
// No command? It's time for usage. // No command? It's time for usage.
if len(os.Args) == 1 { if len(os.Args) == 1 {
Usage() usage()
os.Exit(1) os.Exit(1)
} }
cmd := os.Args[1] cmd := os.Args[1]
var newargs []string os.Args = append(os.Args[:1], os.Args[2:]...)
newargs = append(newargs, os.Args[0])
newargs = append(newargs, os.Args[2:]...)
os.Args = newargs
flag.Parse() flag.Parse()
var buildString string var buildString string
@ -183,7 +186,7 @@ func main() {
default: default:
fmt.Println("No command", cmd) fmt.Println("No command", cmd)
flag.Usage() usage()
} }
if err != nil { if err != nil {
glog.Errorln(err) glog.Errorln(err)