diff --git a/changelog.md b/changelog.md index d53091b03c..2c8fa3b7e4 100644 --- a/changelog.md +++ b/changelog.md @@ -11,6 +11,8 @@ ### Bug Fixes - [#4474](https://github.com/ignite/cli/pull/4474) Fix issue in `build --release` command +- [#4479](https://github.com/ignite/cli/pull/4479) Scaffold an `uint64 type crashs Ignite +- [#4483](https://github.com/ignite/cli/pull/4483) Fix default flag parser for apps ## [`v28.7.0`](https://github.com/ignite/cli/releases/tag/v28.7.0) diff --git a/ignite/services/plugin/flag.go b/ignite/services/plugin/flag.go index 84cebd5f76..86faac02be 100644 --- a/ignite/services/plugin/flag.go +++ b/ignite/services/plugin/flag.go @@ -148,15 +148,5 @@ func flagValue(flag *Flag) string { if flag.Value != "" { return flag.Value } - if flag.DefaultValue != "" { - return flag.DefaultValue - } - if flag.Type == FlagTypeBool || - flag.Type == FlagTypeInt || - flag.Type == FlagTypeInt64 || - flag.Type == FlagTypeUint || - flag.Type == FlagTypeUint64 { - return "0" - } - return "" + return flag.DefaultValue } diff --git a/ignite/services/plugin/flag_test.go b/ignite/services/plugin/flag_test.go index bdce8c73ac..df78f161a1 100644 --- a/ignite/services/plugin/flag_test.go +++ b/ignite/services/plugin/flag_test.go @@ -93,7 +93,7 @@ func TestFlags_GetBool(t *testing.T) { name: "flag without value and default value", key: flagBool3, f: testFlags, - want: false, + err: errors.New("strconv.ParseBool: parsing \"\": invalid syntax"), }, { name: "invalid flag type", @@ -158,7 +158,7 @@ func TestFlags_GetInt(t *testing.T) { name: "flag without value and default value", key: flagInt3, f: testFlags, - want: 0, + err: errors.New("strconv.Atoi: parsing \"\": invalid syntax"), }, { name: "invalid flag type", @@ -182,7 +182,7 @@ func TestFlags_GetInt(t *testing.T) { name: "wrong flag value without default or value", key: flagWrongType3, f: testFlags, - want: 0, + err: errors.New("strconv.Atoi: parsing \"\": invalid syntax"), }, } for _, tt := range tests { @@ -223,7 +223,7 @@ func TestFlags_GetInt64(t *testing.T) { name: "flag without value and default value", key: flagInt643, f: testFlags, - want: 0, + err: errors.New("strconv.ParseInt: parsing \"\": invalid syntax"), }, { name: "invalid flag type", @@ -400,7 +400,7 @@ func TestFlags_GetUint(t *testing.T) { name: "flag without value and default value", key: flagUint3, f: testFlags, - want: 0, + err: errors.New("strconv.ParseUint: parsing \"\": invalid syntax"), }, { name: "invalid flag type", @@ -459,7 +459,7 @@ func TestFlags_GetUint64(t *testing.T) { name: "flag without value and default value", key: flagUint643, f: testFlags, - want: 0, + err: errors.New("strconv.ParseUint: parsing \"\": invalid syntax"), }, { name: "invalid flag type", @@ -570,6 +570,14 @@ func Test_flagValue(t *testing.T) { flag: &Flag{Name: flagString1}, want: "", }, +<<<<<<< HEAD +======= + { + name: "number without value and default value", + flag: &Flag{Name: flagUint642, Type: FlagTypeUint64}, + want: "", + }, +>>>>>>> 7f914230 (fix: default flag parser for apps (#4483)) } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { diff --git a/ignite/services/plugin/grpc/v1/interface_flag.go b/ignite/services/plugin/grpc/v1/interface_flag.go index 8ca199bf84..1d7bd19334 100644 --- a/ignite/services/plugin/grpc/v1/interface_flag.go +++ b/ignite/services/plugin/grpc/v1/interface_flag.go @@ -43,9 +43,6 @@ func (f *Flag) ExportToFlagSet(fs *pflag.FlagSet) error { if f.DefaultValue == "" { f.DefaultValue = "0" } - if f.Value == "" { - f.Value = "0" - } } switch f.Type { @@ -56,7 +53,15 @@ func (f *Flag) ExportToFlagSet(fs *pflag.FlagSet) error { } fs.BoolP(f.Name, f.Shorthand, v, f.Usage) +<<<<<<< HEAD fs.Set(f.Name, f.Value) +======= + if f.Value != "" { + if err := fs.Set(f.Name, f.Value); err != nil { + return newDefaultFlagValueError(cobraFlagTypeBool, f.Value) + } + } +>>>>>>> 7f914230 (fix: default flag parser for apps (#4483)) case Flag_TYPE_FLAG_INT: v, err := strconv.Atoi(f.DefaultValue) if err != nil { @@ -64,7 +69,15 @@ func (f *Flag) ExportToFlagSet(fs *pflag.FlagSet) error { } fs.IntP(f.Name, f.Shorthand, v, f.Usage) +<<<<<<< HEAD fs.Set(f.Name, f.Value) +======= + if f.Value != "" { + if err := fs.Set(f.Name, f.Value); err != nil { + return newDefaultFlagValueError(cobraFlagTypeInt, f.Value) + } + } +>>>>>>> 7f914230 (fix: default flag parser for apps (#4483)) case Flag_TYPE_FLAG_UINT: v, err := strconv.ParseUint(f.DefaultValue, 10, 64) if err != nil { @@ -72,7 +85,15 @@ func (f *Flag) ExportToFlagSet(fs *pflag.FlagSet) error { } fs.UintP(f.Name, f.Shorthand, uint(v), f.Usage) +<<<<<<< HEAD fs.Set(f.Name, f.Value) +======= + if f.Value != "" { + if err := fs.Set(f.Name, f.Value); err != nil { + return newDefaultFlagValueError(cobraFlagTypeUint, f.Value) + } + } +>>>>>>> 7f914230 (fix: default flag parser for apps (#4483)) case Flag_TYPE_FLAG_INT64: v, err := strconv.ParseInt(f.DefaultValue, 10, 64) if err != nil { @@ -80,14 +101,23 @@ func (f *Flag) ExportToFlagSet(fs *pflag.FlagSet) error { } fs.Int64P(f.Name, f.Shorthand, v, f.Usage) +<<<<<<< HEAD fs.Set(f.Name, f.Value) +======= + if f.Value != "" { + if err := fs.Set(f.Name, f.Value); err != nil { + return newDefaultFlagValueError(cobraFlagTypeInt64, f.Value) + } + } +>>>>>>> 7f914230 (fix: default flag parser for apps (#4483)) case Flag_TYPE_FLAG_UINT64: v, err := strconv.ParseUint(f.DefaultValue, 10, 64) if err != nil { - return newDefaultFlagValueError(cobraFlagTypeInt64, f.DefaultValue) + return newDefaultFlagValueError(cobraFlagTypeUint64, f.DefaultValue) } fs.Uint64P(f.Name, f.Shorthand, v, f.Usage) +<<<<<<< HEAD fs.Set(f.Name, f.Value) case Flag_TYPE_FLAG_STRING_SLICE: s := strings.Trim(f.DefaultValue, "[]") @@ -96,6 +126,28 @@ func (f *Flag) ExportToFlagSet(fs *pflag.FlagSet) error { case Flag_TYPE_FLAG_STRING_UNSPECIFIED: fs.StringP(f.Name, f.Shorthand, f.DefaultValue, f.Usage) fs.Set(f.Name, f.Value) +======= + if f.Value != "" { + if err := fs.Set(f.Name, f.Value); err != nil { + return newDefaultFlagValueError(cobraFlagTypeUint64, f.Value) + } + } + case Flag_TYPE_FLAG_STRING_SLICE: + s := strings.Trim(f.DefaultValue, "[]") + fs.StringSliceP(f.Name, f.Shorthand, strings.Fields(s), f.Usage) + if f.Value != "" { + if err := fs.Set(f.Name, strings.Trim(f.Value, "[]")); err != nil { + return newDefaultFlagValueError(cobraFlagTypeStringSlice, f.Value) + } + } + case Flag_TYPE_FLAG_STRING_UNSPECIFIED: + fs.StringP(f.Name, f.Shorthand, f.DefaultValue, f.Usage) + if f.Value != "" { + if err := fs.Set(f.Name, f.Value); err != nil { + return newDefaultFlagValueError(cobraFlagTypeString, f.Value) + } + } +>>>>>>> 7f914230 (fix: default flag parser for apps (#4483)) } return nil }