-
Notifications
You must be signed in to change notification settings - Fork 1
/
values.go
96 lines (91 loc) · 2.35 KB
/
values.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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
package values
import (
"bytes"
"fmt"
"path/filepath"
"github.com/urfave/cli"
)
// FlagReader converter flag value to string
type FlagReader func(*cli.Context) string
const (
// FlagKeyExpression flag name "expression"
FlagKeyExpression = "expression"
// FlagKeyGenerate flag name "generate"
FlagKeyGenerate = "generate"
// FlagKeyName flag name "name"
FlagKeyName = "name"
// FlagKeyOut flag name "out"
FlagKeyOut = "out"
// FlagKeyPackage flag name "package"
FlagKeyPackage = "package"
// FlagKeyIgnoreDotfiles flag name "ignore-dotfile"
FlagKeyIgnoreDotfiles = "ignore-dotfiles"
)
// FlagDefs exported variables for flag defnition
var (
FlagKeys = []string{
FlagKeyExpression,
FlagKeyGenerate,
FlagKeyName,
FlagKeyOut,
FlagKeyPackage,
FlagKeyIgnoreDotfiles,
}
FlagReaderMap = map[string]FlagReader{
FlagKeyExpression: func(c *cli.Context) string {
es := c.StringSlice(FlagKeyExpression)
var buf bytes.Buffer
for _, e := range es {
_, _ = buf.WriteString(fmt.Sprintf("-%s %s", "e", e))
}
return buf.String()
},
FlagKeyGenerate: func(c *cli.Context) string {
if c.Bool(FlagKeyGenerate) {
return "-g"
}
return ""
},
FlagKeyIgnoreDotfiles: func(c *cli.Context) string {
if c.Bool(FlagKeyIgnoreDotfiles) {
return "--ignore-dotfiles"
}
return ""
},
FlagKeyName: func(c *cli.Context) string { return fmt.Sprintf("-%s %s", "n", c.String(FlagKeyName)) },
FlagKeyOut: func(c *cli.Context) string {
path := c.String(FlagKeyOut)
bn := filepath.Base(path)
return fmt.Sprintf("-%s %s", "o", bn)
},
FlagKeyPackage: func(c *cli.Context) string { return fmt.Sprintf("-%s %s", "p", c.String(FlagKeyPackage)) },
}
FlagDefs = []cli.Flag{
cli.StringSliceFlag{
Name: "expression, e",
Usage: "Regular expressions you want files to contain",
},
cli.BoolFlag{
Name: "generate, g",
Usage: "If set, generate go:generate line to outputfile",
},
cli.BoolFlag{
Name: "ignore-dotfiles",
Usage: "If set, ignore dotfiles(i.e. '.gitkeep') ",
},
cli.StringFlag{
Name: "name, n",
Value: "Assets",
Usage: "Variable name for output assets",
},
cli.StringFlag{
Name: "out, o",
Usage: "Output file name, result will be displaed to standard-out when it's skipped",
},
cli.StringFlag{
Name: "package, p",
Value: "main",
Usage: "Package name for output",
},
}
)