diff --git a/hook/hook.go b/hook/hook.go index 72b0471..e09ba40 100644 --- a/hook/hook.go +++ b/hook/hook.go @@ -4,6 +4,7 @@ import ( "context" "errors" "fmt" + "os" "os/exec" "strings" "time" @@ -27,7 +28,7 @@ func execute(command string) error { ctxCmd, cancel := context.WithTimeout(context.Background(), 30*time.Second) defer cancel() - parts := strings.Fields(command) + parts := strings.Fields(os.ExpandEnv(command)) output, err := exec.CommandContext(ctxCmd, parts[0], parts[1:]...).CombinedOutput() if len(output) > 0 { fmt.Println(string(output)) diff --git a/hook/hook_test.go b/hook/hook_test.go new file mode 100644 index 0000000..ec417b6 --- /dev/null +++ b/hook/hook_test.go @@ -0,0 +1,29 @@ +package hook + +import "testing" + +func Test_execute(t *testing.T) { + testCases := []struct { + desc string + command string + }{ + { + desc: "expand env vars", + command: `echo "${GOPATH} ${GOARCH}"`, + }, + { + desc: "simple", + command: `echo 'hello'`, + }, + } + + for _, test := range testCases { + t.Run(test.desc, func(t *testing.T) { + + err := execute(test.command) + if err != nil { + t.Fatal(err) + } + }) + } +}