From 39656f6c83d5d72f42d19a3f883f3407693fb26a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micka=C3=ABl=20Can=C3=A9vet?= Date: Thu, 7 Jan 2021 09:19:29 +0100 Subject: [PATCH] Quote multi-line values in @SUMMONENVFILE --- internal/command/action.go | 10 ++++++++-- internal/command/action_test.go | 4 ++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/internal/command/action.go b/internal/command/action.go index 064ee73..6df60f0 100644 --- a/internal/command/action.go +++ b/internal/command/action.go @@ -7,6 +7,7 @@ import ( "os/exec" "path/filepath" "sort" + "strconv" "strings" "sync" "syscall" @@ -199,9 +200,14 @@ func formatForEnv(key string, value string, spec secretsyml.SecretSpec, tempFact func joinEnv(env map[string]string) string { var envs []string for k, v := range env { - envs = append(envs, fmt.Sprintf("%s=%s", k, v)) + if strings.Contains(v, "\n") { + keyEq := []byte(fmt.Sprintf("%s=", k)) + envs = append(envs, string(strconv.AppendQuote(keyEq, v))) + } else { + envs = append(envs, fmt.Sprintf("%s=%s", k, v)) + } } - + // Sort to ensure predictable results sort.Strings(envs) diff --git a/internal/command/action_test.go b/internal/command/action_test.go index de309ec..83652a2 100644 --- a/internal/command/action_test.go +++ b/internal/command/action_test.go @@ -81,8 +81,8 @@ func TestFormatForEnvString(t *testing.T) { func TestJoinEnv(t *testing.T) { Convey("adds a trailing newline", t, func() { - result := joinEnv(map[string]string{"foo": "bar", "baz": "qux"}) - So(result, ShouldEqual, "baz=qux\nfoo=bar\n") + result := joinEnv(map[string]string{"foo": "bar\nfoo", "baz": "qux"}) + So(result, ShouldEqual, "baz=qux\nfoo=\"bar\\nfoo\"\n") }) }