From ec22291acaebe84b3de66b7c6b042971b619f20e Mon Sep 17 00:00:00 2001 From: Maidul Islam Date: Mon, 27 Feb 2023 14:24:47 -0500 Subject: [PATCH] Revert "fix: always execute cmd in subshell" --- cli/packages/cmd/run.go | 36 ++++++++++++------------------------ 1 file changed, 12 insertions(+), 24 deletions(-) diff --git a/cli/packages/cmd/run.go b/cli/packages/cmd/run.go index d14c6c16fd..ba60c9fec0 100644 --- a/cli/packages/cmd/run.go +++ b/cli/packages/cmd/run.go @@ -186,14 +186,11 @@ func init() { // Will execute a single command and pass in the given secrets into the process func executeSingleCommandWithEnvs(args []string, secretsCount int, env []string) error { - shell := subShellCmd() + command := args[0] + argsForCommand := args[1:] color.Green("Injecting %v Infisical secrets into your application process", secretsCount) - args = append(args[:1], args[0:]...) // shift args to the right - args[0] = shell[1] - - cmd := exec.Command(shell[0], args...) - + cmd := exec.Command(command, argsForCommand...) cmd.Stdin = os.Stdin cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr @@ -203,7 +200,15 @@ func executeSingleCommandWithEnvs(args []string, secretsCount int, env []string) } func executeMultipleCommandWithEnvs(fullCommand string, secretsCount int, env []string) error { - shell := subShellCmd() + shell := [2]string{"sh", "-c"} + if runtime.GOOS == "windows" { + shell = [2]string{"cmd", "/C"} + } else { + currentShell := os.Getenv("SHELL") + if currentShell != "" { + shell[0] = currentShell + } + } cmd := exec.Command(shell[0], shell[1], fullCommand) cmd.Stdin = os.Stdin @@ -217,23 +222,6 @@ func executeMultipleCommandWithEnvs(fullCommand string, secretsCount int, env [] return execCmd(cmd) } -func subShellCmd() [2]string { - // default to sh -c - shell := [...]string{"sh", "-c"} - - currentShell := os.Getenv("SHELL") - if currentShell != "" { - shell[0] = currentShell - } else if runtime.GOOS == "windows" { - // if the SHELL env var is not set and we're on Windows, use cmd.exe - // The SHELL var should always be checked first, in case the user executes - // infisical from something like Git Bash. - return [...]string{"cmd", "/C"} - } - - return shell -} - // Credit: inspired by AWS Valut func execCmd(cmd *exec.Cmd) error { sigChannel := make(chan os.Signal, 1)