mirror of https://github.com/golang/go.git
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:
parent
88b51d2e63
commit
d9f90df2b4
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue