@@ -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
233234func (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