func runCommandWithStdinRedirection()

in gke-deploy/services/exec.go [15:38]


func runCommandWithStdinRedirection(ctx context.Context, printCommand bool, name, input string, args ...string) (string, error) {
	if printCommand {
		fmt.Printf("\n--------------------------------------------------------------------------------\n")
		fmt.Printf("> Running command\n\n")
		fmt.Printf("   %s %s < %s\n", name, strings.Join(args, " "), input)
		fmt.Printf("\n--------------------------------------------------------------------------------\n\n")
	}
	cmd := exec.CommandContext(ctx, name, args...)
	cmd.Stderr = os.Stderr
	// Example taken from https://golang.org/src/os/exec/example_test.go
	stdin, err := cmd.StdinPipe()
	if err != nil {
		return "", err
	}
	go func() {
		defer stdin.Close()
		io.WriteString(stdin, input)
	}()
	out, err := cmd.Output()
	if err != nil {
		return "", err
	}
	return string(out), nil
}