in hooks, allow replacing placeholders with environment (#3044)

This commit is contained in:
Dan Bason 2024-02-19 21:00:58 +13:00 committed by GitHub
parent 34dbcfb508
commit e8b19b82d5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -4,7 +4,7 @@ package externalcmd
import (
"errors"
"fmt"
"strings"
"os"
"time"
)
@ -42,10 +42,15 @@ func NewCmd(
) *Cmd {
// replace variables in both Linux and Windows, in order to allow using the
// same commands on both of them.
for key, val := range env {
cmdstr = strings.ReplaceAll(cmdstr, "$"+key, val)
expandEnv := func(variable string) string {
if value, ok := env[variable]; ok {
return value
}
return os.Getenv(variable)
}
cmdstr = os.Expand(cmdstr, expandEnv)
if onExit == nil {
onExit = func(_ error) {}
}