Skip to content

Commit

Permalink
improve package gcmd
Browse files Browse the repository at this point in the history
  • Loading branch information
gqcn committed Nov 24, 2021
1 parent 8442bab commit 0db3a9f
Showing 1 changed file with 36 additions and 24 deletions.
60 changes: 36 additions & 24 deletions os/gcmd/gcmd_command_object.go
Original file line number Diff line number Diff line change
Expand Up @@ -246,6 +246,42 @@ func newCommandFromMethod(object interface{}, method reflect.Value) (command Com
return
}

func newOptionsFromInput(object interface{}) (options []Option, err error) {
var (
fields []gstructs.Field
)
fields, err = gstructs.Fields(gstructs.FieldsInput{
Pointer: object,
RecursiveOption: gstructs.RecursiveOptionEmbeddedNoTag,
})
for _, field := range fields {
var (
option = Option{}
metaData = field.TagMap()
)
if err = gconv.Scan(metaData, &option); err != nil {
return nil, err
}
if option.Name == "" {
option.Name = field.Name()
}
if option.Name == helpOptionName {
return nil, gerror.Newf(
`option name "%s" is already token by built-in options`,
option.Name,
)
}
if option.Short == helpOptionNameShort {
return nil, gerror.Newf(
`short option name "%s" is already token by built-in options`,
option.Short,
)
}
options = append(options, option)
}
return
}

// mergeDefaultStructValue merges the request parameters with default values from struct tag definition.
func mergeDefaultStructValue(data map[string]interface{}, pointer interface{}) error {
tagFields, err := gstructs.TagFields(pointer, defaultValueTags)
Expand All @@ -270,27 +306,3 @@ func mergeDefaultStructValue(data map[string]interface{}, pointer interface{}) e
}
return nil
}

func newOptionsFromInput(object interface{}) (options []Option, err error) {
var (
fields []gstructs.Field
)
fields, err = gstructs.Fields(gstructs.FieldsInput{
Pointer: object,
RecursiveOption: gstructs.RecursiveOptionEmbeddedNoTag,
})
for _, field := range fields {
var (
option = Option{}
metaData = field.TagMap()
)
if err = gconv.Scan(metaData, &option); err != nil {
return nil, err
}
if option.Name == "" {
option.Name = field.Name()
}
options = append(options, option)
}
return
}

0 comments on commit 0db3a9f

Please sign in to comment.