-
Notifications
You must be signed in to change notification settings - Fork 271
Open
Description
Within the sh
package, args are being expanded in the case where normal sh command would not expand args within single quotes. Example command:
pact-broker create-webhook --user='admin:${user.bitbucketAppPassword}'
- Via normal shell the single quotes will not expand
${user.bitbucketAppPassword}
- Via mage the expansion occurs and the actual command becomes:
pact-broker create-webhook --user='admin:'
Lines 92 to 115 in 26cdb5c
// Exec executes the command, piping its stderr to mage's stderr and | |
// piping its stdout to the given writer. If the command fails, it will return | |
// an error that, if returned from a target or mg.Deps call, will cause mage to | |
// exit with the same code as the command failed with. Env is a list of | |
// environment variables to set when running the command, these override the | |
// current environment variables set (which are also passed to the command). cmd | |
// and args may include references to environment variables in $FOO format, in | |
// which case these will be expanded before the command is run. | |
// | |
// Ran reports if the command ran (rather than was not found or not executable). | |
// Code reports the exit code the command returned if it ran. If err == nil, ran | |
// is always true and code is always 0. | |
func Exec(env map[string]string, stdout, stderr io.Writer, cmd string, args ...string) (ran bool, err error) { | |
expand := func(s string) string { | |
s2, ok := env[s] | |
if ok { | |
return s2 | |
} | |
return os.Getenv(s) | |
} | |
cmd = os.Expand(cmd, expand) | |
for i := range args { | |
args[i] = os.Expand(args[i], expand) | |
} |
Metadata
Metadata
Assignees
Labels
No labels