diff --git a/pkg/config/env.go b/pkg/config/env.go index 0874fb57..8fd9c87b 100644 --- a/pkg/config/env.go +++ b/pkg/config/env.go @@ -153,7 +153,11 @@ func ReadAbraShEnvVars(abraSh string) (map[string]string, error) { scanner := bufio.NewScanner(file) for scanner.Scan() { line := scanner.Text() - if strings.Contains(line, "export") { + if strings.Contains(line, "export ") { + if len(strings.TrimSpace(line)) < len(line) { + // NOTE(d1): indented lines are exports within functions + continue + } splitVals := strings.Split(line, "export ") envVarDef := splitVals[len(splitVals)-1] keyVal := strings.Split(envVarDef, "=") diff --git a/pkg/config/env_test.go b/pkg/config/env_test.go index 157d6ec9..bdfbdf7a 100644 --- a/pkg/config/env_test.go +++ b/pkg/config/env_test.go @@ -87,3 +87,25 @@ func TestReadEnv(t *testing.T) { ) } } + +func TestReadAbraShEnvVars(t *testing.T) { + if err := catalogue.EnsureCatalogue(); err != nil { + t.Fatal(err) + } + + offline := true + r, err := recipe.Get("abra-integration-test-recipe", offline) + if err != nil { + t.Fatal(err) + } + + abraShPath := fmt.Sprintf("%s/%s/%s", config.RECIPES_DIR, r.Name, "abra.sh") + abraShEnv, err := config.ReadAbraShEnvVars(abraShPath) + if err != nil { + t.Fatal(err) + } + + if _, ok := abraShEnv["INNER_FOO"]; ok { + t.Error("INNER_FOO should not be exported") + } +}