pkg runutil, func GetOriginalError(error) error
pkg runutil, func IsExist(error) bool
pkg runutil, func IsNotExist(error) bool
pkg runutil, func IsPermission(error) bool
pkg runutil, func IsTimeout(error) bool
pkg runutil, func LookPath(string, map[string]string) (string, error)
pkg runutil, func NewSequence(map[string]string, io.Reader, io.Writer, io.Writer, bool, bool, bool) Sequence
pkg runutil, func TranslateExitCode(error) error
pkg runutil, method (*Handle) Kill() error
pkg runutil, method (*Handle) Pid() int
pkg runutil, method (*Handle) Signal(os.Signal) error
pkg runutil, method (*Handle) Wait() error
pkg runutil, method (Sequence) AssertDirExists(string) Sequence
pkg runutil, method (Sequence) AssertFileExists(string) Sequence
pkg runutil, method (Sequence) Call(func() error, string, ...interface{}) Sequence
pkg runutil, method (Sequence) Capture(io.Writer, io.Writer) Sequence
pkg runutil, method (Sequence) Chdir(string) Sequence
pkg runutil, method (Sequence) Chmod(string, os.FileMode) Sequence
pkg runutil, method (Sequence) Copy(*os.File, io.Reader) (int64, error)
pkg runutil, method (Sequence) Create(string) (*os.File, error)
pkg runutil, method (Sequence) Dir(string) Sequence
pkg runutil, method (Sequence) Done() error
pkg runutil, method (Sequence) DryRun(bool) Sequence
pkg runutil, method (Sequence) Env(map[string]string) Sequence
pkg runutil, method (Sequence) Error() error
pkg runutil, method (Sequence) Fprintf(io.Writer, string, ...interface{}) Sequence
pkg runutil, method (Sequence) IsDir(string) (bool, error)
pkg runutil, method (Sequence) IsFile(string) (bool, error)
pkg runutil, method (Sequence) Last(string, ...string) error
pkg runutil, method (Sequence) Lstat(string) (os.FileInfo, error)
pkg runutil, method (Sequence) MkdirAll(string, os.FileMode) Sequence
pkg runutil, method (Sequence) Open(string) (*os.File, error)
pkg runutil, method (Sequence) OpenFile(string, int, os.FileMode) (*os.File, error)
pkg runutil, method (Sequence) Output([]string) Sequence
pkg runutil, method (Sequence) Popd() Sequence
pkg runutil, method (Sequence) Pushd(string) Sequence
pkg runutil, method (Sequence) Read(io.Reader) Sequence
pkg runutil, method (Sequence) ReadDir(string) ([]os.FileInfo, error)
pkg runutil, method (Sequence) ReadFile(string) ([]byte, error)
pkg runutil, method (Sequence) Readlink(string) (string, error)
pkg runutil, method (Sequence) Remove(string) Sequence
pkg runutil, method (Sequence) RemoveAll(string) Sequence
pkg runutil, method (Sequence) Rename(string, string) Sequence
pkg runutil, method (Sequence) Run(string, ...string) Sequence
pkg runutil, method (Sequence) RunOpts() (bool, bool)
pkg runutil, method (Sequence) Start(string, ...string) (*Handle, error)
pkg runutil, method (Sequence) Stat(string) (os.FileInfo, error)
pkg runutil, method (Sequence) Symlink(string, string) Sequence
pkg runutil, method (Sequence) TempDir(string, string) (string, error)
pkg runutil, method (Sequence) TempFile(string, string) (*os.File, error)
pkg runutil, method (Sequence) Timeout(time.Duration) Sequence
pkg runutil, method (Sequence) Verbose(bool) Sequence
pkg runutil, method (Sequence) WriteFile(string, []byte, os.FileMode) Sequence
pkg runutil, type Handle struct
pkg runutil, type Sequence struct
