cmd package - github.com/commander-cli/cmd - Go Packages

This section is empty.

This section is empty.

func CaptureStandardOutput

func CaptureStandardOutput(f func() interface{}) (string, interface{})

CaptureStandardOutput allows to capture the output which will be written to os.Stdout and os.Stderr. It returns the captured output and the return value of the called function

func WithCustomBaseCommand added in v1.5.0

func WithCustomBaseCommand(baseCommand *exec.Cmd) func(c *Command)

WithCustomBaseCommand allows the OS specific generated baseCommand to be overridden by an *os/exec.Cmd.

Example:

c := cmd.NewCommand(
  "echo hello",
  cmd.WithCustomBaseCommand(exec.Command("/bin/bash", "-c")),
)
c.Execute()
func WithCustomStderr(writers ...io.Writer) func(c *Command)

WithCustomStderr allows to add custom writers to stderr

func WithCustomStdout(writers ...io.Writer) func(c *Command)

WithCustomStdout allows to add custom writers to stdout

func WithEnvironmentVariables(env EnvVars) func(c *Command)

WithEnvironmentVariables sets environment variables for the executed command

func WithInheritedEnvironment(env EnvVars) func(c *Command)

WithInheritedEnvironment uses the env from the current process and allow to add more variables.

func WithStandardStreams

func WithStandardStreams(c *Command)

WithStandardStreams is used as an option by the NewCommand constructor function and writes the output streams to stderr and stdout of the operating system

Example:

c := cmd.NewCommand("echo hello", cmd.WithStandardStreams)
c.Execute()

WithTimeout sets the timeout of the command

Example:

cmd.NewCommand("sleep 10;", cmd.WithTimeout(500))

WithUser allows the command to be run as a different user.

Example:

cred := syscall.Credential{Uid: 1000, Gid: 1000}
c := NewCommand("echo hello", cred)
c.Execute()
func WithWorkingDir(dir string) func(c *Command)

WithWorkingDir sets the current working directory

func WithoutTimeout(c *Command)

WithoutTimeout disables the timeout for the command

type Command

Command represents a single command which can be executed

func NewCommand

func NewCommand(cmd string, options ...func(*Command)) *Command

NewCommand creates a new command You can add option with variadic option argument Default timeout is set to 30 minutes

Example:

     c := cmd.NewCommand("echo hello", function (c *Command) {
		    c.WorkingDir = "/tmp"
     })
     c.Execute()

or you can use existing options functions

c := cmd.NewCommand("echo hello", cmd.WithStandardStreams)
c.Execute()

func (*Command) AddEnv

func (c *Command) AddEnv(key, value string)

AddEnv adds an environment variable to the command If a variable gets passed like ${VAR_NAME} the env variable will be read out by the current shell

func (*Command) Combined

Combined returns the combined output of stderr and stdout according to their timeline

func (*Command) Execute

Execute executes the command and writes the results into it's own instance The results can be received with the Stdout(), Stderr() and ExitCode() methods

func (*Command) ExecuteContext added in v1.4.0

ExecuteContext runs Execute but with Context

func (*Command) Executed

func (c *Command) Executed() bool

Executed returns if the command was already executed

func (*Command) ExitCode

func (c *Command) ExitCode() int

ExitCode returns the exit code of the command

func (*Command) Stderr

Stderr returns the output to stderr

func (*Command) Stdout

Stdout returns the output to stdout

EnvVars represents a map where the key is the name of the env variable and the value is the value of the variable

Example:

env := map[string]string{"ENV": "VALUE"}