in astro/hooks.go [38:73]
func runCommandkAndSetEnvironment(workingDir string, hook conf.Hook) error {
logger.Trace.Printf("astro: running hook: %v", hook.Command)
args, err := shellquote.Split(hook.Command)
if err != nil {
return err
}
prog, err := exec.LookPath(args[0])
if err != nil {
return err
}
output := &bytes.Buffer{}
cmd := exec.Command(prog, args[1:]...)
cmd.Dir = workingDir
// Have to pipe through stderr and stdin so that scripts that prompt, e.g.
// for MFA will work.
cmd.Stderr = os.Stderr
cmd.Stdin = os.Stdin
cmd.Stdout = output
if err := cmd.Run(); err != nil {
return err
}
if hook.SetEnv {
if err := parseOutputIntoEnv(output); err != nil {
return fmt.Errorf("unable to set env var from hook output: %v", err)
}
}
return nil
}