Fix: dont generate pointer for dest for Generic flag

This commit is contained in:
Naveen Gogineni 2022-09-10 18:03:25 -04:00
parent 6124f3ad9e
commit 15491d6f91
5 changed files with 68 additions and 50 deletions

View File

@ -17,7 +17,7 @@ type {{.TypeName}} struct {
HasBeenSet bool
Value {{if .ValuePointer}}*{{end}}{{.GoType}}
Destination *{{.GoType}}
Destination {{if .NoDestinationPointer}}{{else}}*{{end}}{{.GoType}}
Aliases []string
EnvVars []string

View File

@ -223,10 +223,11 @@ func (gfs *Spec) SortedFlagTypes() []*FlagType {
}
type FlagTypeConfig struct {
SkipInterfaces []string `yaml:"skip_interfaces"`
StructFields []*FlagStructField `yaml:"struct_fields"`
TypeName string `yaml:"type_name"`
ValuePointer bool `yaml:"value_pointer"`
SkipInterfaces []string `yaml:"skip_interfaces"`
StructFields []*FlagStructField `yaml:"struct_fields"`
TypeName string `yaml:"type_name"`
ValuePointer bool `yaml:"value_pointer"`
NoDestinationPointer bool `yaml:"no_destination_pointer"`
}
type FlagStructField struct {
@ -256,6 +257,14 @@ func (ft *FlagType) ValuePointer() bool {
return ft.Config.ValuePointer
}
func (ft *FlagType) NoDestinationPointer() bool {
if ft.Config == nil {
return false
}
return ft.Config.NoDestinationPointer
}
func (ft *FlagType) TypeName() string {
return TypeName(ft.GoType, ft.Config)
}

View File

@ -5,62 +5,71 @@
flag_types:
bool:
struct_fields:
- { name: Count, type: int, pointer: true }
float64: {}
int64:
struct_fields:
- { name: Base, type: int }
int:
struct_fields:
- { name: Base, type: int }
time.Duration: {}
uint64:
struct_fields:
- { name: Base, type: int }
uint:
struct_fields:
- { name: Base, type: int }
string:
struct_fields:
- { name: TakesFile, type: bool }
Generic:
struct_fields:
- { name: TakesFile, type: bool }
Path:
struct_fields:
- { name: TakesFile, type: bool }
- name: Count
type: int
pointer: true
float64:
Float64Slice:
value_pointer: true
skip_interfaces:
- fmt.Stringer
Int64Slice:
value_pointer: true
skip_interfaces:
- fmt.Stringer
int:
struct_fields:
- name: Base
type: int
IntSlice:
value_pointer: true
skip_interfaces:
- fmt.Stringer
int64:
struct_fields:
- name: Base
type: int
Int64Slice:
value_pointer: true
skip_interfaces:
- fmt.Stringer
uint:
struct_fields:
- name: Base
type: int
UintSlice:
value_pointer: true
skip_interfaces:
- fmt.Stringer
uint64:
struct_fields:
- name: Base
type: int
Uint64Slice:
value_pointer: true
skip_interfaces:
- fmt.Stringer
string:
struct_fields:
- name: TakesFile
type: bool
StringSlice:
value_pointer: true
skip_interfaces:
- fmt.Stringer
struct_fields:
- { name: TakesFile, type: bool }
- name: TakesFile
type: bool
time.Duration:
Timestamp:
value_pointer: true
struct_fields:
- { name: Layout, type: string }
- { name: Timezone, type: "*time.Location" }
UintSlice:
value_pointer: true
skip_interfaces:
- fmt.Stringer
Uint64Slice:
value_pointer: true
skip_interfaces:
- fmt.Stringer
- name: Layout
type: string
- name: Timezone
type: "*time.Location"
Generic:
no_destination_pointer: true
struct_fields:
- name: TakesFile
type: bool
Path:
struct_fields:
- name: TakesFile
type: bool

View File

@ -1085,7 +1085,7 @@ type GenericFlag struct {
HasBeenSet bool
Value Generic
Destination *Generic
Destination Generic
Aliases []string
EnvVars []string

View File

@ -58,7 +58,7 @@ type GenericFlag struct {
HasBeenSet bool
Value Generic
Destination *Generic
Destination Generic
Aliases []string
EnvVars []string