func runCommandkAndSetEnvironment()

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
}