dive/dive/image/podman/cli.go
2019-11-08 13:28:04 -05:00

54 lines
1 KiB
Go

// +build linux
package podman
import (
"fmt"
"github.com/wagoodman/dive/utils"
"io"
"os"
"os/exec"
)
// runPodmanCmd runs a given Podman command in the current tty
func runPodmanCmd(cmdStr string, args ...string) error {
if !isPodmanClientBinaryAvailable() {
return fmt.Errorf("cannot find podman client executable")
}
allArgs := utils.CleanArgs(append([]string{cmdStr}, args...))
cmd := exec.Command("podman", allArgs...)
cmd.Env = os.Environ()
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
cmd.Stdin = os.Stdin
return cmd.Run()
}
func streamPodmanCmd(args ...string) (error, io.Reader) {
if !isPodmanClientBinaryAvailable() {
return fmt.Errorf("cannot find podman client executable"), nil
}
cmd := exec.Command("podman", utils.CleanArgs(args)...)
cmd.Env = os.Environ()
reader, writer, err := os.Pipe()
if err != nil {
return err, nil
}
cmd.Stdout = writer
cmd.Stderr = os.Stderr
return cmd.Start(), reader
}
func isPodmanClientBinaryAvailable() bool {
_, err := exec.LookPath("podman")
return err == nil
}