From 8ebe72750f9845f6946538672ceecb3192f016ea Mon Sep 17 00:00:00 2001 From: Weidi Deng Date: Wed, 13 Jan 2021 20:21:54 +0800 Subject: [PATCH] Fix environmental variables not expanded in command --- runner/runner.go | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/runner/runner.go b/runner/runner.go index 9d8cc70c..c0e30985 100644 --- a/runner/runner.go +++ b/runner/runner.go @@ -65,6 +65,30 @@ func (r *Runner) exec(raw, evt, path, dst string, user *users.User) error { return err } + envMapping := func(key string) string { + switch key { + case "FILE": + return path + case "SCOPE": + return user.Scope + case "TRIGGER": + return evt + case "USERNAME": + return user.Username + case "DESTINATION": + return dst + default: + return os.Getenv(key) + } + } + for i, arg := range command { + if i == 0 { + continue + } + + command[i] = os.Expand(arg, envMapping) + } + cmd := exec.Command(command[0], command[1:]...) //nolint:gosec cmd.Env = append(os.Environ(), fmt.Sprintf("FILE=%s", path)) cmd.Env = append(cmd.Env, fmt.Sprintf("SCOPE=%s", user.Scope)) //nolint:gocritic