mirror of
https://github.com/grafana/grafana.git
synced 2024-11-25 18:30:41 -06:00
24d348f804
* Split go files * Modify publishartifacts.go * Split main * FIXME: Temp add GCSCopy to gcloud/storage * Fix lint * Exported flags * Update starlark - make drone * Further backend lint fixes * Add fallback_test.go * Fix go imports order * make drone * Remove GCSCopy from static assets * Remove GCSCopy from storybook * Fix lint * Remove GCSCopy * Remove success logline * drone yaml cleanup * Add artifacts-editions flag * Fix starlark * Add default sting slice in artifacts packages command
41 lines
1.2 KiB
Go
41 lines
1.2 KiB
Go
package env
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"strings"
|
|
|
|
"github.com/urfave/cli/v2"
|
|
)
|
|
|
|
// RequireListWithEnvFallback first checks the CLI for a flag with the required
|
|
// name. If this is empty, it falls back to taking the environment variable.
|
|
// Sadly, we cannot use cli.Flag.EnvVars for this due to it potentially leaking
|
|
// environment variables as default values in usage-errors.
|
|
func RequireListWithEnvFallback(cctx *cli.Context, name string, envName string) ([]string, error) {
|
|
result := cctx.StringSlice(name)
|
|
if len(result) == 0 {
|
|
for _, v := range strings.Split(os.Getenv(envName), ",") {
|
|
value := strings.TrimSpace(v)
|
|
if value != "" {
|
|
result = append(result, value)
|
|
}
|
|
}
|
|
}
|
|
if len(result) == 0 {
|
|
return nil, cli.Exit(fmt.Sprintf("Required flag (%s) or environment variable (%s) not set", name, envName), 1)
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
func RequireStringWithEnvFallback(cctx *cli.Context, name string, envName string) (string, error) {
|
|
result := cctx.String(name)
|
|
if result == "" {
|
|
result = os.Getenv(envName)
|
|
}
|
|
if result == "" {
|
|
return "", cli.Exit(fmt.Sprintf("Required flag (%s) or environment variable (%s) not set", name, envName), 1)
|
|
}
|
|
return result, nil
|
|
}
|