From d90625dc0a91844c0f09861ec88a2fa30bae63e3 Mon Sep 17 00:00:00 2001 From: Alexander Wang Date: Wed, 16 Nov 2022 16:55:12 -0800 Subject: [PATCH] 2022-11-16 04:55:12PM --- ci/release/changelogs/next.md | 3 ++- lib/xmain/opts.go | 49 ++++++++++++++++------------------- 2 files changed, 25 insertions(+), 27 deletions(-) diff --git a/ci/release/changelogs/next.md b/ci/release/changelogs/next.md index ffd49ca9c..abd4b28f7 100644 --- a/ci/release/changelogs/next.md +++ b/ci/release/changelogs/next.md @@ -6,7 +6,8 @@ For v0.0.99 we focused on X, Y and Z. Enjoy! #### Improvements 🔧 -- Add table columns indices in edges between SQL Tables so that layout engines can route exactly between them +- Equivalency between flags and environment variables. You can set either one for all + options (flags take precedence). #### Bugfixes 🔴 diff --git a/lib/xmain/opts.go b/lib/xmain/opts.go index 498f0db7e..ed260537f 100644 --- a/lib/xmain/opts.go +++ b/lib/xmain/opts.go @@ -52,47 +52,44 @@ func (o *Opts) Help() string { return b.String() } +func (o *Opts) getEnv(k string) string { + if k != "" { + o.registeredEnvs = append(o.registeredEnvs, k) + return o.env.Getenv(k) + } + return "" +} + func (o *Opts) Int64(envKey, flag, shortFlag string, defaultVal int64, usage string) (*int64, error) { - if envKey != "" { - if o.env.Getenv(envKey) != "" { - envVal, err := strconv.ParseInt(o.env.Getenv(envKey), 10, 64) - if err != nil { - return nil, fmt.Errorf(`invalid environment variable %s. Expected int64. Found "%v".`, envKey, envVal) - } - defaultVal = envVal + if env := o.getEnv(envKey); env != "" { + envVal, err := strconv.ParseInt(env, 10, 64) + if err != nil { + return nil, fmt.Errorf(`invalid environment variable %s. Expected int64. Found "%v".`, envKey, envVal) } - o.registeredEnvs = append(o.registeredEnvs, envKey) + defaultVal = envVal } return o.Flags.Int64P(flag, shortFlag, defaultVal, usage), nil } func (o *Opts) String(envKey, flag, shortFlag string, defaultVal, usage string) *string { - if envKey != "" { - if o.env.Getenv(envKey) != "" { - envVal := o.env.Getenv(envKey) - defaultVal = envVal - } - o.registeredEnvs = append(o.registeredEnvs, envKey) + if env := o.getEnv(envKey); env != "" { + defaultVal = env } return o.Flags.StringP(flag, shortFlag, defaultVal, usage) } func (o *Opts) Bool(envKey, flag, shortFlag string, defaultVal bool, usage string) (*bool, error) { - if envKey != "" { - if o.env.Getenv(envKey) != "" { - envVal := o.env.Getenv(envKey) - if !boolyEnv(envVal) { - return nil, fmt.Errorf(`invalid environment variable %s. Expected bool. Found "%s".`, envKey, envVal) - } - if truthyEnv(envVal) { - defaultVal = true - } else { - defaultVal = false - } + if env := o.getEnv(envKey); env != "" { + if !boolyEnv(env) { + return nil, fmt.Errorf(`invalid environment variable %s. Expected bool. Found "%s".`, envKey, env) + } + if truthyEnv(env) { + defaultVal = true + } else { + defaultVal = false } - o.registeredEnvs = append(o.registeredEnvs, envKey) } return o.Flags.BoolP(flag, shortFlag, defaultVal, usage), nil