Automate CLI commands with Go
A wrapper for Go's command execution packages.
go get github.com/alexellis/go-execute/pkg/v1
See docs at pkg.go.dev: github.com/alexellis/go-execute
Feel free to add a link to your own projects in a PR.
This example captures the values from stdout and stderr without relaying to the console. This means the values can be inspected and used for automation.
package main
import (
"fmt"
execute "github.com/alexellis/go-execute/pkg/v1"
)
func main() {
cmd := execute.ExecTask{
Command: "docker",
Args: []string{"version"},
StreamStdio: false,
}
res, err := cmd.Execute()
if err != nil {
panic(err)
}
if res.ExitCode != 0 {
panic("Non-zero exit code: " + res.Stderr)
}
fmt.Printf("stdout: %s, stderr: %s, exit-code: %d\n", res.Stdout, res.Stderr, res.ExitCode)
}
package main
import (
"fmt"
execute "github.com/alexellis/go-execute/pkg/v1"
)
func main() {
ls := execute.ExecTask{
Command: "ls",
Args: []string{"-l"},
Shell: true,
}
res, err := ls.Execute()
if err != nil {
panic(err)
}
fmt.Printf("stdout: %q, stderr: %q, exit-code: %d\n", res.Stdout, res.Stderr, res.ExitCode)
}
package main
import (
"fmt"
execute "github.com/alexellis/go-execute/pkg/v1"
)
func main() {
ls := execute.ExecTask{
Command: "exit 1",
Shell: true,
}
res, err := ls.Execute()
if err != nil {
panic(err)
}
fmt.Printf("stdout: %q, stderr: %q, exit-code: %d\n", res.Stdout, res.Stderr, res.ExitCode)
}
Commits must be signed off with git commit -s
License: MIT