/
flags.go
235 lines (216 loc) · 5.96 KB
/
flags.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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
package main
import (
"github.com/urfave/cli/v2"
)
var (
outputDir string
goType string
goName string
goPackageName string
goPackagePath string
goFilename string
enableErrors bool
enableText bool
enableJSON bool
enableYAML bool
enableSQL bool
enableFlags bool
enableDescriptions bool
enableCodesYARPC bool
pluginCodesYARPCDefault int
enableCodesHTTP bool
pluginCodesHTTPDefault int
enableCodesOSExit bool
pluginCodesOSExitDefault int
)
func flagOverrides() []cli.Flag {
return []cli.Flag{
&cli.PathFlag{
Name: "output-dir",
Aliases: []string{
"o",
},
Usage: "Directory to write generated files to.",
EnvVars: []string{
"RENUM_OUTPUT_DIR",
},
Destination: &outputDir,
},
&cli.StringFlag{
Name: "go-name",
Usage: "Name of the Go type you wish to create for the Enum's type.",
EnvVars: []string{
"RENUM_GO_NAME",
},
Destination: &goName,
},
&cli.StringFlag{
Name: "go-package-name",
Usage: "Go package name of the resulting file.",
EnvVars: []string{
"RENUM_GO_PACKAGE_NAME",
},
Destination: &goPackageName,
},
&cli.StringFlag{
Name: "go-package-import-path",
Usage: "Full import path of the resulting Go file's package.",
EnvVars: []string{
"RENUM_GO_PACKAGE_IMPORT_PATH",
},
Destination: &goPackagePath,
},
&cli.StringFlag{
Name: "go-filename",
Usage: `Filename the results will be written to. Defaults to 'generated_%s.go' where %s is a snake case pluralized version of the --go-name.`,
EnvVars: []string{
"RENUM_GO_FILENAME",
},
Destination: &goFilename,
},
// Errors
&cli.BoolFlag{
Name: "enable-errors",
Usage: "Enable the errors plugin to generate functions for the go error interface.",
EnvVars: []string{
"RENUM_ENABLE_ERRORS",
},
Destination: &enableErrors,
},
// Text
&cli.BoolFlag{
Name: "enable-text",
Usage: "Enable generation of text.Marshaler and text.Unmarshaler interfaces.",
EnvVars: []string{
"RENUM_ENABLE_TEXT",
},
Destination: &enableText,
},
// JSON
&cli.BoolFlag{
Name: "enable-json",
Usage: "Enable generation of the json.Marshaler and json.Unmarshaler interfaces.",
EnvVars: []string{
"RENUM_ENABLE_JSON",
},
Destination: &enableJSON,
},
// YAML
&cli.BoolFlag{
Name: "enable-yaml",
Usage: "Enable generation of the yaml.Marshaler and yaml.Unmarshaler interfaces.",
EnvVars: []string{
"RENUM_ENABLE_YAML",
},
Destination: &enableYAML,
},
// SQL
&cli.BoolFlag{
Name: "enable-sql",
Usage: "Enable generation of the sql.Scanner and driver.Value interfaces (for database/sql).",
EnvVars: []string{
"RENUM_ENABLE_SQL",
},
Destination: &enableSQL,
},
// Flags
&cli.BoolFlag{
Name: "enable-flags",
Usage: "Enable generation of the github.com/spf13/pflag.Value interface methods.",
EnvVars: []string{
"RENUM_ENABLE_FLAGS",
},
Destination: &enableFlags,
},
// TODO: Implement pascal case lookup.
// Pascal
// &cli.BoolFlag{
// Name: "--enable-pascal-looku",
// Usage: "Enable debugging output.",
// EnvVars: []string{
// "RENUM_ENABLE_NAMESPACES",
// },
// Destination: &c.Plugins.Namespace.Enabled,
// },
// TODO: Implement screaming case lookup.
// Screaming
// &cli.BoolFlag{
// Name: "--enable-namespaces",
// Usage: "Enable debugging output.",
// EnvVars: []string{
// "RENUM_ENABLE_NAMESPACES",
// },
// Destination: &c.Plugins.Namespace.Enabled,
// },
// Description
&cli.BoolFlag{
Name: "enable-descriptions",
Usage: "Enable generation of a Description() string method that returns a longer description of the particular value.",
EnvVars: []string{
"RENUM_ENABLE_DESCRIPTIONS",
},
Destination: &enableDescriptions,
},
// Codes - YARPC
&cli.BoolFlag{
Name: "enable-codes-yarpc",
Usage: "Enable generation of a ToYARPC() yarpcerrors.Code method that returns a custom yarpcerrors.Code unique to that value. (or default otherwise).",
EnvVars: []string{
"RENUM_ENABLE_CODES_YARPC",
},
Destination: &enableCodesYARPC,
},
&cli.IntFlag{
Name: "plugin-codes-yarpc-default",
Usage: "Set a default value for the YARPC error code returned by enums (can be overridden individually).",
EnvVars: []string{
"RENUM_PLUGIN_CODES_YARPC_DEFAULT",
},
Destination: &pluginCodesYARPCDefault,
},
// Codes - HTTP
&cli.BoolFlag{
Name: "enable-codes-http",
Usage: "Enable generation of a ToHTTP() int method that returns a custom HTTP Response status code unique to that value. (or default otherwise).",
EnvVars: []string{
"RENUM_ENABLE_CODES_HTTP",
},
Destination: &enableCodesHTTP,
},
&cli.IntFlag{
Name: "plugin-codes-http-default",
Usage: "Set a default value for the HTTP status code returned by enums (can be overridden individually).",
EnvVars: []string{
"RENUM_PLUGIN_CODES_HTTP_DEFAULT",
},
Destination: &pluginCodesHTTPDefault,
},
// Codes - OS Exit
&cli.BoolFlag{
Name: "enable-codes-os-exit",
Usage: "Enable generation of a ToOSExit() int method that returns a custom os.Exit code unique to that value. (or default otherwise).",
EnvVars: []string{
"RENUM_ENABLE_CODES_OS_EXIT",
},
Destination: &enableCodesOSExit,
},
&cli.IntFlag{
Name: "plugin-codes-os-exit-default",
Usage: "Set a default value for the OS exit code returned by enums (can be overridden individually).",
EnvVars: []string{
"RENUM_PLUGIN_CODES_OS_EXIT_DEFAULT",
},
Destination: &pluginCodesOSExitDefault,
},
// TODO: Implement docs
// Docs
// &cli.BoolFlag{
// Name: "--enable-namespaces",
// Usage: "Enable debugging output.",
// EnvVars: []string{
// "RENUM_ENABLE_NAMESPACES",
// },
// Destination: &c.Plugins.Namespace.Enabled,
// },
}
}