Skip to content

Commit

Permalink
fix: envprefix should configiable which now is {cli_name}_
Browse files Browse the repository at this point in the history
  • Loading branch information
morlay committed Jun 17, 2024
1 parent 17f6363 commit 9c0030f
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 5 deletions.
5 changes: 5 additions & 0 deletions pkg/cli/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,11 @@ func (a *app) bindCommandFromStruct(c *C, rv reflect.Value, flags *pflag.FlagSet
Options: tag.Values,
}
}

if envPrefix, ok := ft.Tag.Lookup("envprefix"); ok {
n.envPrefix = envPrefix
}

continue
}

Expand Down
17 changes: 12 additions & 5 deletions pkg/cli/cmd.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ type C struct {
cmdPath []string
args args
flagVars []*flagVar
envPrefix string
singletons configuration.Singletons
subcommands []Command
}
Expand All @@ -45,10 +46,16 @@ type CanRuntimeDoc interface {

func addConfigurator(c *C, fv reflect.Value, flags *pflag.FlagSet, name string, appName string) {
c.singletons = append(c.singletons, fv.Addr().Interface())
collectFlagsFromConfigurator(c, flags, fv, name, appName)

envPrefix := c.envPrefix
if envPrefix == "" {
envPrefix = fmt.Sprintf("%s_", appName)
}

collectFlagsFromConfigurator(c, flags, fv, name, envPrefix)
}

func collectFlagsFromConfigurator(c *C, flags *pflag.FlagSet, rv reflect.Value, prefix string, appName string) {
func collectFlagsFromConfigurator(c *C, flags *pflag.FlagSet, rv reflect.Value, prefix string, envPrefix string) {
var docer CanRuntimeDoc

if rv.CanAddr() {
Expand Down Expand Up @@ -129,9 +136,9 @@ func collectFlagsFromConfigurator(c *C, flags *pflag.FlagSet, rv reflect.Value,

if ft.Type.Kind() == reflect.Struct && ff.Type() != "string" {
if ft.Anonymous {
collectFlagsFromConfigurator(c, flags, fv, prefix, appName)
collectFlagsFromConfigurator(c, flags, fv, prefix, envPrefix)
} else {
collectFlagsFromConfigurator(c, flags, fv, flagName, appName)
collectFlagsFromConfigurator(c, flags, fv, flagName, envPrefix)
}
continue
}
Expand All @@ -148,7 +155,7 @@ func collectFlagsFromConfigurator(c *C, flags *pflag.FlagSet, rv reflect.Value,
}

ff.Name = camelcase.LowerKebabCase(flagName)
ff.EnvVar = camelcase.UpperSnakeCase(fmt.Sprintf("%s_%s", appName, flagName))
ff.EnvVar = camelcase.UpperSnakeCase(fmt.Sprintf("%s%s", envPrefix, flagName))

c.flagVars = append(c.flagVars, ff)
ff.Apply(flags)
Expand Down

0 comments on commit 9c0030f

Please sign in to comment.