mirror of
https://github.com/helm/helm.git
synced 2026-05-28 04:35:48 -04:00
Refactor environment variable expansion in PrepareCommands and update tests
Signed-off-by: yxxhero <aiopsclub@163.com>
This commit is contained in:
parent
b740071279
commit
2d49f0cb4a
2 changed files with 14 additions and 10 deletions
|
|
@ -82,15 +82,16 @@ func PrepareCommands(cmds []PlatformCommand, expandArgs bool, extraArgs []string
|
|||
if len(cmdParts) == 0 || cmdParts[0] == "" {
|
||||
return "", nil, fmt.Errorf("no plugin command is applicable")
|
||||
}
|
||||
|
||||
main := os.Expand(cmdParts[0], func(key string) string {
|
||||
envMappingFunc := func(key string) string {
|
||||
return env[key]
|
||||
})
|
||||
}
|
||||
|
||||
main := os.Expand(cmdParts[0], envMappingFunc)
|
||||
baseArgs := []string{}
|
||||
if len(cmdParts) > 1 {
|
||||
for _, cmdPart := range cmdParts[1:] {
|
||||
if expandArgs {
|
||||
baseArgs = append(baseArgs, os.ExpandEnv(cmdPart))
|
||||
baseArgs = append(baseArgs, os.Expand(cmdPart, envMappingFunc))
|
||||
} else {
|
||||
baseArgs = append(baseArgs, cmdPart)
|
||||
}
|
||||
|
|
@ -99,7 +100,7 @@ func PrepareCommands(cmds []PlatformCommand, expandArgs bool, extraArgs []string
|
|||
|
||||
for _, arg := range args {
|
||||
if expandArgs {
|
||||
baseArgs = append(baseArgs, os.ExpandEnv(arg))
|
||||
baseArgs = append(baseArgs, os.Expand(arg, envMappingFunc))
|
||||
} else {
|
||||
baseArgs = append(baseArgs, arg)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ limitations under the License.
|
|||
package plugin
|
||||
|
||||
import (
|
||||
"os"
|
||||
"reflect"
|
||||
"runtime"
|
||||
"testing"
|
||||
|
|
@ -224,16 +225,18 @@ func TestPrepareCommandsNoCommands(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestPrepareCommandsExpand(t *testing.T) {
|
||||
t.Setenv("TEST", "test")
|
||||
t.Setenv("TESTX", "testx")
|
||||
cmdMain := "sh"
|
||||
cmdArgs := []string{"-c", "echo \"${TEST}\""}
|
||||
cmdArgs := []string{"-c", "echo \"${TESTX}${TESTY}\""}
|
||||
cmds := []PlatformCommand{
|
||||
{OperatingSystem: "", Architecture: "", Command: cmdMain, Args: cmdArgs},
|
||||
}
|
||||
|
||||
expectedArgs := []string{"-c", "echo \"test\""}
|
||||
expectedArgs := []string{"-c", "echo \"testxtesty\""}
|
||||
|
||||
env := parseEnv(os.Environ())
|
||||
env["TESTY"] = "testy"
|
||||
|
||||
env := map[string]string{}
|
||||
cmd, args, err := PrepareCommands(cmds, true, []string{}, env)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
|
|
@ -253,8 +256,8 @@ func TestPrepareCommandsNoExpand(t *testing.T) {
|
|||
cmds := []PlatformCommand{
|
||||
{OperatingSystem: "", Architecture: "", Command: cmdMain, Args: cmdArgs},
|
||||
}
|
||||
env := parseEnv(os.Environ())
|
||||
|
||||
env := map[string]string{}
|
||||
cmd, args, err := PrepareCommands(cmds, false, []string{}, env)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
|
|
|
|||
Loading…
Reference in a new issue