Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix: dont generate pointer for dest for Generic flag #1488

Merged
merged 1 commit into from Sep 11, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion cmd/urfave-cli-genflags/generated.gotmpl
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
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
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
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
Expand Up @@ -58,7 +58,7 @@ type GenericFlag struct {
HasBeenSet bool

Value Generic
Destination *Generic
Destination Generic

Aliases []string
EnvVars []string
Expand Down