From 3e09e2fa2831ab0b51678171b7934cf9e6b4f8a7 Mon Sep 17 00:00:00 2001 From: Marc Khouzam Date: Wed, 6 Nov 2019 09:36:29 -0500 Subject: [PATCH] fix(cli): Sort output of helm env Before this change, running 'helm env' multiple times would generate a different order for the output each time. This is because Go purposely loops over hash maps in a random order. This commit sorts the environment variables by alphabetical order before generating the output. Signed-off-by: Marc Khouzam --- cmd/helm/env.go | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/cmd/helm/env.go b/cmd/helm/env.go index 1b9cb4012..2687272ba 100644 --- a/cmd/helm/env.go +++ b/cmd/helm/env.go @@ -19,6 +19,7 @@ package main import ( "fmt" "io" + "sort" "helm.sh/helm/v3/pkg/cli" @@ -55,8 +56,18 @@ type envOptions struct { } func (o *envOptions) run(out io.Writer) error { - for k, v := range o.settings.EnvVars() { - fmt.Printf("%s=\"%s\"\n", k, v) + envVars := o.settings.EnvVars() + + // Sort the variables by alphabetical order. + // This allows for a constant output across calls to 'helm env'. + var keys []string + for k := range envVars { + keys = append(keys, k) + } + sort.Strings(keys) + + for _, k := range keys { + fmt.Printf("%s=\"%s\"\n", k, envVars[k]) } return nil }