forked from influxdata/influxdb
-
Notifications
You must be signed in to change notification settings - Fork 0
/
parse.go
29 lines (25 loc) · 868 Bytes
/
parse.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// Package cmd is the root package of the various command-line utilities for InfluxDB.
package cmd
import "strings"
// ParseCommandName extracts the command name and args from the args list.
func ParseCommandName(args []string) (string, []string) {
// Retrieve command name as first argument.
var name string
if len(args) > 0 {
if !strings.HasPrefix(args[0], "-") {
name = args[0]
} else if args[0] == "-h" || args[0] == "-help" || args[0] == "--help" {
// Special case -h immediately following binary name
name = "help"
}
}
// If command is "help" and has an argument then rewrite args to use "-h".
if name == "help" && len(args) > 2 && !strings.HasPrefix(args[1], "-") {
return args[1], []string{"-h"}
}
// If a named command is specified then return it with its arguments.
if name != "" {
return name, args[1:]
}
return "", args
}