Documentation
¶
Overview ¶
Package cmder implements builder functionality wrapping os/exec for easily constructing shell commands
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Cmder ¶
type Cmder interface {
// Args appends additional arguments to the given command
Args(...string) Cmder
// Ctx can be used to pass context to the underlying exec command. The Run method will call
// exec.CommandContext with the given context
Ctx(context.Context) Cmder
// CombinedOutput runs the command and returns its combined
// standard output and standard error.
CombinedOutput() ([]byte, error)
// Complete returns a boolean value as to whether the command has complete it's execution
Complete() bool
// Clone returns a new Cmder copied from the original
Clone() Cmder
// Dir specifies the working directory of the command.
//
// If Dir is not set, Run runs the command in the
// calling process's current directory.
Dir(string) Cmder
// DryRun sets the current Cmder instance to run in DryRun mode (log and skip execution)
//
// Option to pass one or more strings to replace the dryrun action key
// defaults to LoggerDryRunKey
DryRun(...string) Cmder
// Duration returns the duration in time.Duration the command took to run
// if it has completed.
Duration() time.Duration
// Env appends the given strings to the environment of the process
//
// Each entry is of the form "key=value".
//
// The new process uses the calling process's environment in addition
// to the keys provided by Env.
//
// If Env contains duplicate environment keys, only the last
// value in the slice for each duplicate key is used.
Env(...string) Cmder
// ExitCode returns the exit code of the command. If Run has not been invoked
// zero will always be returned.
ExitCode() int
// In connects the new process' stdin to the current process's stdin if no input provided.
// If input provided the input will be passed to the new process' stdin.
In(...byte) Cmder
// Out connects the new process' stdout and optionally stderr to the given io.Writers
// Useful for writing to buffer or files
Out(stdout io.Writer, stderr ...io.Writer) Cmder
// Kill invokes the os.exec Kill method on the command
//
// Kill causes the Process to exit immediately.
// Kill does not wait until the Process has actually exited.
// This only kills the Process itself, not any other processes it may have started.
Kill() error
// LogCmder will print the command that is to be executed.
// Included in Run if Silent unset
// See also String, LogCmd
LogCmd()
// Allows setting an external logger.
// See the Logger interface for more details.
Logger(log.Logger) Cmder
// Output invokes the os.exec Output method on the command
//
// Output runs the command and returns its stdout.
// Any returned error will usually be of type *exec.ExitError.
Output() ([]byte, error)
// Pid returns the process id of the exited process or nil if the process has yet to exit.
// See also
// - Process
// - https://pkg.go.dev/os#Process
Pid() *int
// Process is the underlying process, once started.
// See also: https://pkg.go.dev/os#Process
Process() *os.Process
// Run invokes the os.exec Run method on the command
//
// Run calls exec.Run starting the specified command and waits for it to complete.
// If Silent not set, the command will be printed prior to execution.
//
// Optionally one or two io.Writer may be passed to Run where
// the first being stdout and the second being stderr.
// If only one specified it will be connected to the processes' stdout and stderr.
//
// The returned error is nil if the command runs, has no problems copying stdin, stdout, and stderr, and exits with a zero exit status.
//
// If the command starts but does not complete successfully, the error is of type *ExitError. Other error types may be returned for other situations.
//
// If the calling goroutine has locked the operating system thread with runtime.LockOSThread and modified any inheritable OS-level thread state (for example, Linux or Plan 9 name spaces), the new process will inherit the caller's thread state.
Run(...io.Writer) error
// RunFn returns a function to call Run with the given command
// optionally appending any new args and returning an error.
// When the function is invoked a new underlying command is created
// in order to retain the state of the original.
//
// Optionally one or two io.Writer may be passed to Run where
// the first being stdout and the second being stderr.
// If only one specified it will be connected to the processes' stdout and stderr.
//
// Can be useful in defining a command once and calling it
// multiple times or ways.
//
// See also: RunFnWithCmd
RunFn(...io.Writer) func(args ...string) error
// RunFnCmd returns a function to call Run with the given command
// optionally appending any new args and returning the new command
// and a possible error.
// When the function is invoked a new underlying command is created
// in order to retain the state of the original.
//
// Optionally one or two io.Writer may be passed to Run where
// the first being stdout and the second being stderr.
// If only one specified it will be connected to the processes' stdout and stderr.
//
// Can be useful in defining a command once and calling it
// multiple times or ways.
//
// See also: RunFn
RunFnCmd(...io.Writer) func(args ...string) (Cmder, error)
// Silent will set Run to not print the command prior to execution
Silent() Cmder
// Start invokes the os.exec Start method on the command
//
// Start starts the specified command but does not wait for it to complete.
//
// If Start returns successfully, the Process method will be set.
//
// The Wait method will return the exit code and release associated resources
// once the command exits.
//
// Optionally one or two io.Writer may be passed to Run where
// the first being stdout and the second being stderr.
// If only one specified it will be connected to the processes' stdout and stderr.
//
Start(...io.Writer) error
// StartFn returns a function to call Run with the given command
// optionally appending any new args and returning an error.
// When the function is invoked a new underlying command is created
// in order to retain the state of the original.
//
// Optionally one or two io.Writer may be passed to Run where
// the first being stdout and the second being stderr.
// If only one specified it will be connected to the processes' stdout and stderr.
//
// Can be useful in defining a command once and calling it
// multiple times or ways.
//
// See also: StartFnCmd, RunFun, RunFnWithCmd
StartFn(w ...io.Writer) func(args ...string) error
// StartFnCmd returns a function to call Run with the given command
// optionally appending any new args and returning the new command
// and a possible error.
// When the function is invoked a new underlying command is created
// in order to retain the state of the original.
//
// Optionally one or two io.Writer may be passed to Run where
// the first being stdout and the second being stderr.
// If only one specified it will be connected to the processes' stdout and stderr.
//
// Can be useful in defining a command once and calling it
// multiple times or ways.
//
// See also: StartFn, RunFnCmd, RunFn
StartFnCmd(...io.Writer) func(args ...string) (Cmder, error)
// String returns a human-readable description of the command
// from exec.Cmder. It is intended only for debugging.
// In particular, it is not suitable for use as input to a shell.
// The output of String may vary across Go releases.
// See also: DryRun
String() string
// Wait invokes the os.exec Wait method on the command
//
// Wait waits for the command to exit and waits for any copying to
// stdin or copying from stdout or stderr to complete.
//
// The command must have been started by Start.
//
// The returned error is nil if the command runs, has no problems
// copying stdin, stdout, and stderr, and exits with a zero exit
// status.
//
// If the command fails to run or doesn't complete successfully, the
// error is of type *ExitError. Other error types may be
// returned for I/O problems.
//
// If any of c.Stdin, c.Stdout or c.Stderr are not an *os.File, Wait also waits
// for the respective I/O loop copying to or from the process to complete.
//
// Wait releases any resources associated with the Cmd.
Wait() error
}
Cmder the os/exec shell command builder interface
Click to show internal directories.
Click to hide internal directories.