Skip to content

Commit 9491405

Browse files
authored
Add tag for usage (#20)
1 parent 23fef95 commit 9491405

File tree

2 files changed

+21
-17
lines changed

2 files changed

+21
-17
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import (
2424

2525
type Config struct {
2626
DB Database `default:{}`
27-
DebugMode bool `flag:"debug"`
27+
DebugMode bool `flag:"debug" usage:"enable verbose debug logging"`
2828
}
2929

3030
type Database struct {

config.go

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -131,54 +131,54 @@ func (c *ConfReader) flagsBinding(conf interface{}) error {
131131
for _, v := range tagsInfo {
132132
switch v.Type.Kind() {
133133
case reflect.String:
134-
flags.String(v.Name, v.DefaultVal, "")
134+
flags.String(v.Name, v.DefaultVal, v.Usage)
135135

136136
case reflect.Bool:
137-
flags.Bool(v.Name, false, "")
137+
flags.Bool(v.Name, false, v.Usage)
138138

139139
case reflect.Float32:
140-
flags.Float32(v.Name, 0, "")
140+
flags.Float32(v.Name, 0, v.Usage)
141141

142142
case reflect.Float64:
143-
flags.Float64(v.Name, 0, "")
143+
flags.Float64(v.Name, 0, v.Usage)
144144

145145
case reflect.Int:
146-
flags.Int(v.Name, 0, "")
146+
flags.Int(v.Name, 0, v.Usage)
147147

148148
case reflect.Int16:
149-
flags.Int16(v.Name, 0, "")
149+
flags.Int16(v.Name, 0, v.Usage)
150150

151151
case reflect.Int32:
152-
flags.Int(v.Name, 0, "")
152+
flags.Int(v.Name, 0, v.Usage)
153153

154154
case reflect.Int64:
155155
if v.Type.String() == "time.Duration" {
156-
flags.Duration(v.Name, 0, "")
156+
flags.Duration(v.Name, 0, v.Usage)
157157
} else {
158-
flags.Int64(v.Name, 0, "")
158+
flags.Int64(v.Name, 0, v.Usage)
159159
}
160160

161161
case reflect.Int8:
162-
flags.Int8(v.Name, 0, "")
162+
flags.Int8(v.Name, 0, v.Usage)
163163

164164
case reflect.Uint:
165-
flags.Uint(v.Name, 0, "")
165+
flags.Uint(v.Name, 0, v.Usage)
166166
case reflect.Uint32:
167-
flags.Uint(v.Name, 0, "")
167+
flags.Uint(v.Name, 0, v.Usage)
168168

169169
case reflect.Uint64:
170-
flags.Uint64P(v.Name, "", 0, "")
170+
flags.Uint64P(v.Name, v.Usage, 0, v.Usage)
171171

172172
case reflect.Uint8:
173-
flags.Uint8(v.Name, 0, "")
173+
flags.Uint8(v.Name, 0, v.Usage)
174174

175175
case reflect.Uint16:
176-
flags.Uint16(v.Name, 0, "")
176+
flags.Uint16(v.Name, 0, v.Usage)
177177

178178
case reflect.Slice:
179179
switch v.Type.String() {
180180
case "[]string":
181-
flags.StringSlice(v.Name, []string{}, "")
181+
flags.StringSlice(v.Name, []string{}, v.Usage)
182182
case "[]uint8":
183183
flags.BytesBase64(v.Name, []byte{}, "byte array in base64")
184184
}
@@ -228,6 +228,7 @@ type flagInfo struct {
228228
Type reflect.Type
229229
DefaultVal string
230230
EnvVar string
231+
Usage string
231232
}
232233

233234
func (c *ConfReader) dumpStruct(t reflect.Type, path string, res map[string]*flagInfo) map[string]*flagInfo {
@@ -254,6 +255,7 @@ func (c *ConfReader) dumpStruct(t reflect.Type, path string, res map[string]*fla
254255
// do we have flag name override ?
255256
flagVal := f.Tag.Get("flag")
256257
envVar := f.Tag.Get("envvar")
258+
usage := f.Tag.Get("usage")
257259

258260
fieldPath := strings.TrimPrefix(strings.ToLower(path+"."+f.Name), ".")
259261
if flagVal != "" {
@@ -262,13 +264,15 @@ func (c *ConfReader) dumpStruct(t reflect.Type, path string, res map[string]*fla
262264
Type: f.Type,
263265
DefaultVal: f.Tag.Get("default"),
264266
EnvVar: envVar,
267+
Usage: usage,
265268
}
266269
} else {
267270
res[fieldPath] = &flagInfo{
268271
Name: fieldPath,
269272
Type: f.Type,
270273
DefaultVal: f.Tag.Get("default"),
271274
EnvVar: envVar,
275+
Usage: usage,
272276
}
273277
}
274278

0 commit comments

Comments
 (0)