46 lines
880 B
Go
46 lines
880 B
Go
package utils
|
|
|
|
import (
|
|
"bytes"
|
|
"os"
|
|
"os/exec"
|
|
"strings"
|
|
)
|
|
|
|
// RunDockerCmd runs a given Docker command in the current tty
|
|
func RunDockerCmd(cmdStr string, args ...string) error {
|
|
|
|
allArgs := cleanArgs(append([]string{cmdStr}, args...))
|
|
|
|
cmd := exec.Command("docker", allArgs...)
|
|
|
|
cmd.Stdout = os.Stdout
|
|
cmd.Stderr = os.Stderr
|
|
cmd.Stdin = os.Stdin
|
|
|
|
return cmd.Run()
|
|
}
|
|
|
|
// cleanArgs trims the whitespace from the given set of strings.
|
|
func cleanArgs(s []string) []string {
|
|
var r []string
|
|
for _, str := range s {
|
|
if str != "" {
|
|
r = append(r, strings.Trim(str, " "))
|
|
}
|
|
}
|
|
return r
|
|
}
|
|
|
|
func DiscoverDockerVersion() string {
|
|
cmd := exec.Command("docker", "version", "--format", "{{.Server.APIVersion}}")
|
|
cmdOutput := &bytes.Buffer{}
|
|
cmd.Stdout = cmdOutput
|
|
|
|
err := cmd.Run()
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
return strings.TrimSpace(string(cmdOutput.Bytes()))
|
|
}
|