utils: github.com/juju/utils/exec Index | Files

package exec

import "github.com/juju/utils/exec"

Index

Package Files

exec.go exec_unix.go

Variables

var ErrCancelled = errors.New("command cancelled")

ErrCancelled is returned by WaitWithCancel in case it successfully manages to kill the running process.

func KillProcess Uses

func KillProcess(proc *os.Process) error

KillProcess tries to kill the process being ran by RunParams We need this convoluted implementation because everything ran under the bash script is spawned as a different process and doesn't get killed by a regular process.Kill() For details see https://groups.google.com/forum/#!topic/golang-nuts/XoQ3RhFBJl8

type ExecResponse Uses

type ExecResponse struct {
    Code   int
    Stdout []byte
    Stderr []byte
}

ExecResponse contains the return code and output generated by executing a command.

func RunCommands Uses

func RunCommands(run RunParams) (*ExecResponse, error)

RunCommands executes the Commands specified in the RunParams using powershell on windows, and '/bin/bash -s' on everything else, passing the commands through as stdin, and collecting stdout and stderr. If a non-zero return code is returned, this is collected as the code for the response and this does not classify as an error.

type RunParams Uses

type RunParams struct {
    Commands    string
    WorkingDir  string
    Environment []string
    Clock       clock.Clock
    KillProcess func(*os.Process) error
    User        string
    // contains filtered or unexported fields
}

Parameters for RunCommands. Commands contains one or more commands to be executed using bash or PowerShell. If WorkingDir is set, this is passed through. Similarly if the Environment is specified, this is used for executing the command. TODO: refactor this to use a config struct and a constructor. Remove todo and extra code from WaitWithCancel once this is done.

func (*RunParams) Process Uses

func (r *RunParams) Process() *os.Process

Process returns the *os.Process instance of the current running process This will allow us to kill the process if needed, or get more information on the process

func (*RunParams) Run Uses

func (r *RunParams) Run() error

Run sets up the command environment (environment variables, working dir) and starts the process. The commands are passed into bash on Linux machines and to powershell on Windows machines.

func (*RunParams) Wait Uses

func (r *RunParams) Wait() (*ExecResponse, error)

Wait blocks until the process exits, and returns an ExecResponse type containing stdout, stderr and the return code of the process. If a non-zero return code is returned, this is collected as the code for the response and this does not classify as an error.

func (*RunParams) WaitWithCancel Uses

func (r *RunParams) WaitWithCancel(cancel <-chan struct{}) (*ExecResponse, error)

WaitWithCancel waits until the process exits or until a signal is sent on the cancel channel. In case a signal is sent it first tries to kill the process and return ErrCancelled. If it fails at killing the process it will return anyway and report the problematic PID.

Package exec imports 13 packages (graph) and is imported by 484 packages. Updated 2018-08-22. Refresh now. Tools for package owners.