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(io.Writer, 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) 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) SetEnv(map[string]string) Sequence
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
