@@ -198,54 +198,57 @@ func (f *FlagSetFiller) processField(flagSet *flag.FlagSet, fieldRef interface{}
198198 }
199199 // go through all supported structs
200200 if isSupportedStruct (fieldRef ) {
201- handler := extendedTypes [getTypeName (t )]
201+ name := getTypeName (t )
202+ handler := extendedTypes [name ]
202203 err = handler (tag , fieldRef , hasDefaultTag , tagDefault , flagSet , renamed , usage , aliases )
204+ if err != nil {
205+ return fmt .Errorf ("failed to process %s: %w" , name , err )
206+ }
207+ } else {
208+ switch {
209+ case t .Kind () == reflect .String :
210+ f .processString (fieldRef , hasDefaultTag , tagDefault , flagSet , renamed , usage , aliases )
203211
204- }
205-
206- switch {
207- case t .Kind () == reflect .String :
208- f .processString (fieldRef , hasDefaultTag , tagDefault , flagSet , renamed , usage , aliases )
209-
210- case t .Kind () == reflect .Bool :
211- err = f .processBool (fieldRef , hasDefaultTag , tagDefault , flagSet , renamed , usage , aliases )
212+ case t .Kind () == reflect .Bool :
213+ err = f .processBool (fieldRef , hasDefaultTag , tagDefault , flagSet , renamed , usage , aliases )
212214
213- case t .Kind () == reflect .Float64 :
214- err = f .processFloat64 (fieldRef , hasDefaultTag , tagDefault , flagSet , renamed , usage , aliases )
215+ case t .Kind () == reflect .Float64 :
216+ err = f .processFloat64 (fieldRef , hasDefaultTag , tagDefault , flagSet , renamed , usage , aliases )
215217
216- // NOTE check time.Duration before int64 since it is aliasesed from int64
217- case t == durationType , fieldType == "duration" :
218- err = f .processDuration (fieldRef , hasDefaultTag , tagDefault , flagSet , renamed , usage , aliases )
218+ // NOTE check time.Duration before int64 since it is aliasesed from int64
219+ case t == durationType , fieldType == "duration" :
220+ err = f .processDuration (fieldRef , hasDefaultTag , tagDefault , flagSet , renamed , usage , aliases )
219221
220- case t .Kind () == reflect .Int64 :
221- err = f .processInt64 (fieldRef , hasDefaultTag , tagDefault , flagSet , renamed , usage , aliases )
222+ case t .Kind () == reflect .Int64 :
223+ err = f .processInt64 (fieldRef , hasDefaultTag , tagDefault , flagSet , renamed , usage , aliases )
222224
223- case t .Kind () == reflect .Int :
224- err = f .processInt (fieldRef , hasDefaultTag , tagDefault , flagSet , renamed , usage , aliases )
225+ case t .Kind () == reflect .Int :
226+ err = f .processInt (fieldRef , hasDefaultTag , tagDefault , flagSet , renamed , usage , aliases )
225227
226- case t .Kind () == reflect .Uint64 :
227- err = f .processUint64 (fieldRef , hasDefaultTag , tagDefault , flagSet , renamed , usage , aliases )
228+ case t .Kind () == reflect .Uint64 :
229+ err = f .processUint64 (fieldRef , hasDefaultTag , tagDefault , flagSet , renamed , usage , aliases )
228230
229- case t .Kind () == reflect .Uint :
230- err = f .processUint (fieldRef , hasDefaultTag , tagDefault , flagSet , renamed , usage , aliases )
231+ case t .Kind () == reflect .Uint :
232+ err = f .processUint (fieldRef , hasDefaultTag , tagDefault , flagSet , renamed , usage , aliases )
231233
232- case t == stringSliceType , fieldType == "stringSlice" :
233- var override bool
234- if overrideValue , exists := tag .Lookup ("override-value" ); exists {
235- if value , err := strconv .ParseBool (overrideValue ); err == nil {
236- override = value
234+ case t == stringSliceType , fieldType == "stringSlice" :
235+ var override bool
236+ if overrideValue , exists := tag .Lookup ("override-value" ); exists {
237+ if value , err := strconv .ParseBool (overrideValue ); err == nil {
238+ override = value
239+ }
237240 }
238- }
239- f .processStringSlice (fieldRef , hasDefaultTag , tagDefault , flagSet , renamed , usage , override , aliases )
241+ f .processStringSlice (fieldRef , hasDefaultTag , tagDefault , flagSet , renamed , usage , override , aliases )
240242
241- case t == stringToStringMapType , fieldType == "stringMap" :
242- f .processStringToStringMap (fieldRef , hasDefaultTag , tagDefault , flagSet , renamed , usage , aliases )
243+ case t == stringToStringMapType , fieldType == "stringMap" :
244+ f .processStringToStringMap (fieldRef , hasDefaultTag , tagDefault , flagSet , renamed , usage , aliases )
243245
244- // ignore any other types
245- }
246+ // ignore any other types
247+ }
246248
247- if err != nil {
248- return err
249+ if err != nil {
250+ return err
251+ }
249252 }
250253
251254 if ! f .options .noSetFromEnv && envName != "" {
0 commit comments