diff --git a/cli/app/new.go b/cli/app/new.go index 023fac5a..975ca502 100644 --- a/cli/app/new.go +++ b/cli/app/new.go @@ -97,7 +97,7 @@ var appNewCommand = cli.Command{ var secrets AppSecrets var secretTable *jsontable.JSONTable if internal.Secrets { - sampleEnv, err := recipe.SampleEnv(config.ReadEnvOptions{}) + sampleEnv, err := recipe.SampleEnv() if err != nil { logrus.Fatal(err) } diff --git a/pkg/compose/compose.go b/pkg/compose/compose.go index 86c4dfb4..3fd98191 100644 --- a/pkg/compose/compose.go +++ b/pkg/compose/compose.go @@ -29,7 +29,7 @@ func UpdateTag(pattern, image, tag, recipeName string) (bool, error) { opts := stack.Deploy{Composefiles: []string{composeFile}} envSamplePath := path.Join(config.RECIPES_DIR, recipeName, ".env.sample") - sampleEnv, err := config.ReadEnv(envSamplePath, config.ReadEnvOptions{}) + sampleEnv, err := config.ReadEnv(envSamplePath) if err != nil { return false, err } @@ -97,7 +97,7 @@ func UpdateLabel(pattern, serviceName, label, recipeName string) error { opts := stack.Deploy{Composefiles: []string{composeFile}} envSamplePath := path.Join(config.RECIPES_DIR, recipeName, ".env.sample") - sampleEnv, err := config.ReadEnv(envSamplePath, config.ReadEnvOptions{}) + sampleEnv, err := config.ReadEnv(envSamplePath) if err != nil { return err } diff --git a/pkg/config/app.go b/pkg/config/app.go index c5426786..996c5357 100644 --- a/pkg/config/app.go +++ b/pkg/config/app.go @@ -25,6 +25,9 @@ import ( // AppEnv is a map of the values in an apps env config type AppEnv = map[string]string +// AppModifiers is a map of modifiers in an apps env config +type AppModifiers = map[string]map[string]string + // AppName is AppName type AppName = string @@ -150,7 +153,7 @@ func (a ByName) Less(i, j int) bool { } func ReadAppEnvFile(appFile AppFile, name AppName) (App, error) { - env, err := ReadEnv(appFile.Path, ReadEnvOptions{}) + env, err := ReadEnv(appFile.Path) if err != nil { return App{}, fmt.Errorf("env file for %s couldn't be read: %s", name, err.Error()) } diff --git a/pkg/config/env.go b/pkg/config/env.go index ecbb1b27..fd537f22 100644 --- a/pkg/config/env.go +++ b/pkg/config/env.go @@ -55,23 +55,8 @@ func GetServers() ([]string, error) { return servers, nil } -// ReadEnvOptions modifies the ReadEnv processing of env vars. -type ReadEnvOptions struct { - IncludeModifiers bool -} - -// ContainsEnvVarModifier determines if an env var contains a modifier. -func ContainsEnvVarModifier(envVar string) bool { - for _, mod := range envVarModifiers { - if strings.Contains(envVar, fmt.Sprintf("%s=", mod)) { - return true - } - } - return false -} - // ReadEnv loads an app envivornment into a map. -func ReadEnv(filePath string, opts ReadEnvOptions) (AppEnv, error) { +func ReadEnv(filePath string) (AppEnv, error) { var envVars AppEnv envVars, _, err := godotenv.Read(filePath) @@ -79,23 +64,13 @@ func ReadEnv(filePath string, opts ReadEnvOptions) (AppEnv, error) { return nil, err } - // for idx, envVar := range envVars { - // if strings.Contains(envVar, "#") { - // if opts.IncludeModifiers && ContainsEnvVarModifier(envVar) { - // continue - // } - // vals := strings.Split(envVar, "#") - // envVars[idx] = strings.TrimSpace(vals[0]) - // } - // } - logrus.Debugf("read %s from %s", envVars, filePath) return envVars, nil } // ReadEnv loads an app envivornment into a map. -func ReadEnvWithModifiers(filePath string, opts ReadEnvOptions) (AppEnv, map[string]map[string]string, error) { +func ReadEnvWithModifiers(filePath string) (AppEnv, AppModifiers, error) { var envVars AppEnv envVars, mods, err := godotenv.Read(filePath) @@ -241,7 +216,7 @@ func CheckEnv(app App) ([]EnvVar, error) { return envVars, err } - envSample, err := ReadEnv(envSamplePath, ReadEnvOptions{}) + envSample, err := ReadEnv(envSamplePath) if err != nil { return envVars, err } diff --git a/pkg/config/env_test.go b/pkg/config/env_test.go index 155ccc27..f0626e6b 100644 --- a/pkg/config/env_test.go +++ b/pkg/config/env_test.go @@ -77,7 +77,7 @@ func TestGetAllFilesInDirectory(t *testing.T) { } func TestReadEnv(t *testing.T) { - env, err := config.ReadEnv(ExpectedAppFile.Path, config.ReadEnvOptions{}) + env, err := config.ReadEnv(ExpectedAppFile.Path) if err != nil { t.Fatal(err) } @@ -155,7 +155,7 @@ func TestCheckEnv(t *testing.T) { } envSamplePath := path.Join(config.RECIPES_DIR, r.Name, ".env.sample") - envSample, err := config.ReadEnv(envSamplePath, config.ReadEnvOptions{}) + envSample, err := config.ReadEnv(envSamplePath) if err != nil { t.Fatal(err) } @@ -189,7 +189,7 @@ func TestCheckEnvError(t *testing.T) { } envSamplePath := path.Join(config.RECIPES_DIR, r.Name, ".env.sample") - envSample, err := config.ReadEnv(envSamplePath, config.ReadEnvOptions{}) + envSample, err := config.ReadEnv(envSamplePath) if err != nil { t.Fatal(err) } @@ -217,16 +217,6 @@ func TestCheckEnvError(t *testing.T) { } } -func TestContainsEnvVarModifier(t *testing.T) { - if ok := config.ContainsEnvVarModifier("FOO=bar # bing"); ok { - t.Fatal("FOO contains no env var modifier") - } - - if ok := config.ContainsEnvVarModifier("FOO=bar # length=3"); !ok { - t.Fatal("FOO contains an env var modifier (length)") - } -} - func TestEnvVarCommentsRemoved(t *testing.T) { offline := true r, err := recipe.Get("abra-test-recipe", offline) @@ -235,7 +225,7 @@ func TestEnvVarCommentsRemoved(t *testing.T) { } envSamplePath := path.Join(config.RECIPES_DIR, r.Name, ".env.sample") - envSample, err := config.ReadEnv(envSamplePath, config.ReadEnvOptions{}) + envSample, err := config.ReadEnv(envSamplePath) if err != nil { t.Fatal(err) } @@ -267,7 +257,7 @@ func TestEnvVarModifiersIncluded(t *testing.T) { } envSamplePath := path.Join(config.RECIPES_DIR, r.Name, ".env.sample") - envSample, modifiers, err := config.ReadEnvWithModifiers(envSamplePath, config.ReadEnvOptions{IncludeModifiers: true}) + envSample, modifiers, err := config.ReadEnvWithModifiers(envSamplePath) if err != nil { t.Fatal(err) } diff --git a/pkg/lint/recipe.go b/pkg/lint/recipe.go index e9214104..cae797f3 100644 --- a/pkg/lint/recipe.go +++ b/pkg/lint/recipe.go @@ -227,7 +227,7 @@ func LintAppService(recipe recipe.Recipe) (bool, error) { // therefore no matching traefik deploy label will be present. func LintTraefikEnabledSkipCondition(recipe recipe.Recipe) (bool, error) { envSamplePath := path.Join(config.RECIPES_DIR, recipe.Name, ".env.sample") - sampleEnv, err := config.ReadEnv(envSamplePath, config.ReadEnvOptions{}) + sampleEnv, err := config.ReadEnv(envSamplePath) if err != nil { return false, fmt.Errorf("Unable to discover .env.sample for %s", recipe.Name) } diff --git a/pkg/recipe/recipe.go b/pkg/recipe/recipe.go index 6e47e029..dbd4a520 100644 --- a/pkg/recipe/recipe.go +++ b/pkg/recipe/recipe.go @@ -227,7 +227,7 @@ func Get(recipeName string, offline bool) (Recipe, error) { } envSamplePath := path.Join(config.RECIPES_DIR, recipeName, ".env.sample") - sampleEnv, err := config.ReadEnv(envSamplePath, config.ReadEnvOptions{}) + sampleEnv, err := config.ReadEnv(envSamplePath) if err != nil { return Recipe{}, err } @@ -255,9 +255,9 @@ func Get(recipeName string, offline bool) (Recipe, error) { }, nil } -func (r Recipe) SampleEnv(opts config.ReadEnvOptions) (map[string]string, error) { +func (r Recipe) SampleEnv() (map[string]string, error) { envSamplePath := path.Join(config.RECIPES_DIR, r.Name, ".env.sample") - sampleEnv, err := config.ReadEnv(envSamplePath, opts) + sampleEnv, err := config.ReadEnv(envSamplePath) if err != nil { return sampleEnv, fmt.Errorf("unable to discover .env.sample for %s", r.Name) } diff --git a/pkg/secret/secret.go b/pkg/secret/secret.go index c6652653..82a9d8ea 100644 --- a/pkg/secret/secret.go +++ b/pkg/secret/secret.go @@ -69,7 +69,7 @@ func GeneratePassphrases(count uint) ([]string, error) { // "app new" case where we pass in the .env.sample and the "secret generate" // case where the app is created. func ReadSecretsConfig(appEnvPath string, composeFiles []string, recipeName string) (map[string]SecretValue, error) { - appEnv, appModifiers, err := config.ReadEnvWithModifiers(appEnvPath, config.ReadEnvOptions{IncludeModifiers: true}) + appEnv, appModifiers, err := config.ReadEnvWithModifiers(appEnvPath) if err != nil { return nil, err } diff --git a/pkg/secret/secret_test.go b/pkg/secret/secret_test.go index a4b0fc0c..bb462a8a 100644 --- a/pkg/secret/secret_test.go +++ b/pkg/secret/secret_test.go @@ -18,7 +18,7 @@ func TestReadSecretsConfig(t *testing.T) { t.Fatal(err) } - sampleEnv, err := recipe.SampleEnv(config.ReadEnvOptions{}) + sampleEnv, err := recipe.SampleEnv() if err != nil { t.Fatal(err) }