cmd/dist: simplify exec.Cmd helpers

Now that the required Go bootstrap version is 1.17, we can simplify
some of the logic for working with exec.Cmd.Env as those APIs have
been simplified.

Updates #44505.

Change-Id: Ia62ab9830320c7daf65a15f2313471dfaba687b5
Reviewed-on: https://go-review.googlesource.com/c/go/+/427957
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Bryan Mills <bcmills@google.com>
Run-TryBot: Austin Clements <austin@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
This commit is contained in:
Austin Clements 2022-08-29 17:24:01 -04:00
parent 88b51d2e63
commit d9f90df2b4
1 changed files with 6 additions and 15 deletions

21
src/cmd/dist/exec.go vendored
View File

@ -17,23 +17,11 @@ func setDir(cmd *exec.Cmd, dir string) {
}
// setEnv sets cmd.Env so that key = value.
//
// It first removes any existing values for key, so it is safe to call
// even from within cmdbootstrap.
func setEnv(cmd *exec.Cmd, key, value string) {
kv := key + "=" + value
if cmd.Env == nil {
cmd.Env = os.Environ()
}
prefix := kv[:len(key)+1]
for i, entry := range cmd.Env {
if strings.HasPrefix(entry, prefix) {
cmd.Env[i] = kv
return
}
}
cmd.Env = append(cmd.Env, kv)
}
@ -44,10 +32,13 @@ func unsetEnv(cmd *exec.Cmd, key string) {
}
prefix := key + "="
for i, entry := range cmd.Env {
newEnv := []string{}
for _, entry := range cmd.Env {
if strings.HasPrefix(entry, prefix) {
cmd.Env = append(cmd.Env[:i], cmd.Env[i+1:]...)
return
continue
}
newEnv = append(newEnv, entry)
// key may appear multiple times, so keep going.
}
cmd.Env = newEnv
}