From f3afd5cb79d6ad8b9cc8d54cb8fc2344b7c07d3d Mon Sep 17 00:00:00 2001 From: WeidiDeng Date: Wed, 20 Jan 2021 00:02:46 +0800 Subject: [PATCH] fix: environmental variables not expanded in command (#1241) --- runner/runner.go | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/runner/runner.go b/runner/runner.go index 9d8cc70ceb..c0e309851b 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