forked from ingrammicro/concerto
-
Notifications
You must be signed in to change notification settings - Fork 0
/
cmd_helper.go
70 lines (61 loc) · 1.69 KB
/
cmd_helper.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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package cmd
import (
"fmt"
"os"
"runtime"
"strings"
log "github.com/Sirupsen/logrus"
"github.com/codegangsta/cli"
"github.com/ingrammicro/concerto/utils/format"
)
// debugCmdFuncInfo writes context info about the calling function
func debugCmdFuncInfo(c *cli.Context) {
if log.GetLevel() < log.DebugLevel {
return
}
// get function name
dbgMsg := ""
pc, _, _, ok := runtime.Caller(1)
if ok {
dbgMsg = runtime.FuncForPC(pc).Name()
i := strings.LastIndex(dbgMsg, "/")
if i != -1 {
dbgMsg = dbgMsg[i+1:]
}
} else {
dbgMsg = "<unknown function name>"
}
dbgMsg = fmt.Sprintf("func %s", dbgMsg)
// get used flags
for _, flag := range c.FlagNames() {
dbgMsg = fmt.Sprintf("%s\n\t%s=%+v", dbgMsg, flag, c.Generic(flag))
}
log.Debugf(dbgMsg)
}
// checkRequiredFlags checks for required flags, and show usage if requirements not met
func checkRequiredFlags(c *cli.Context, flags []string, f format.Formatter) {
missing := ""
for _, flag := range flags {
if !c.IsSet(flag) {
missing = fmt.Sprintf("%s\n\t--%s", missing, flag)
}
}
if missing != "" {
f.PrintError("Incorrect usage.", fmt.Errorf("Mandatory parameters missing: %s\n", missing))
cli.ShowCommandHelp(c, c.Command.Name)
os.Exit(2)
}
}
// checkRequiredFlagsOr checks that at least one of required flags is present, and show usage if requirements not met
func checkRequiredFlagsOr(c *cli.Context, flags []string, f format.Formatter) {
missing := ""
for _, flag := range flags {
if c.IsSet(flag) {
return
}
missing = fmt.Sprintf("%s\n\t--%s", missing, flag)
}
f.PrintError("Incorrect usage.", fmt.Errorf("Please use one of these parameters: %s\n", missing))
cli.ShowCommandHelp(c, c.Command.Name)
os.Exit(2)
}