Skip to content

Commit

Permalink
Merge pull request #1488 from dearchap/no_dest_ptr
Browse files Browse the repository at this point in the history
Fix: dont generate pointer for dest for Generic flag
  • Loading branch information
dearchap authored Sep 11, 2022
2 parents 6124f3a + 15491d6 commit 8dba5c3
Show file tree
Hide file tree
Showing 5 changed files with 64 additions and 46 deletions.
2 changes: 1 addition & 1 deletion cmd/urfave-cli-genflags/generated.gotmpl
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
17 changes: 13 additions & 4 deletions cmd/urfave-cli-genflags/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -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)
}
Expand Down
87 changes: 48 additions & 39 deletions flag-spec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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
StringSlice:
int64:
struct_fields:
- name: Base
type: int
Int64Slice:
value_pointer: true
skip_interfaces:
- fmt.Stringer
uint:
struct_fields:
- { name: TakesFile, type: bool }
Timestamp:
value_pointer: true
struct_fields:
- { name: Layout, type: string }
- { name: Timezone, type: "*time.Location" }

- 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
time.Duration:
Timestamp:
value_pointer: true
struct_fields:
- 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
2 changes: 1 addition & 1 deletion godoc-current.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1085,7 +1085,7 @@ type GenericFlag struct {
HasBeenSet bool

Value Generic
Destination *Generic
Destination Generic

Aliases []string
EnvVars []string
Expand Down
2 changes: 1 addition & 1 deletion zz_generated.flags.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ type GenericFlag struct {
HasBeenSet bool

Value Generic
Destination *Generic
Destination Generic

Aliases []string
EnvVars []string
Expand Down

0 comments on commit 8dba5c3

Please sign in to comment.