import "github.com/egdaemon/eg/runtime/wasi/shell"

Constants

const (
    DefaultTimeout = 5 * time.Minute
)

func Op

func Op(cmds ...Command) eg.OpFn

Convience function for running a set of commands as an operation.

func Parallel

func Parallel(cmds ...Command) eg.OpFn

Convience function for running a set of commands in parallel as an operation.

func Run

func Run(ctx context.Context, cmds ...Command) error

Run the provided commands using the operation.

type Command

type Command struct {
    // contains filtered or unexported fields
}

func Env

func Env() Command

Env creates a runtime command pre-populated with the current process environment.

func New

func New(cmd string) Command

New create a new command with reasonable defaults. defaults:

timeout: 5 minutes.

func NewLocal

func NewLocal() Command

NewLocal creates a command that executes locally via bash without the WASI runtime or sudo. Useful for testing.

func Newf

func Newf(cmd string, options ...any) Command

Newf provides a simple printf form of creating commands.

func Runtime

func Runtime() Command

Runtime creates a Command with no specified command to run. and can be used as a template:

tmp := shell.Runtime().Environ("FOO", "BAR")

shell.Run(

tmp.New("ls -lha"),
tmp.New("echo hello world"),

)

func (Command) As

func (t Command) As(u string) Command

convience function that sets both user and group to the provided value.

func (Command) Attempts

func (t Command) Attempts(a int16) Command

number of attempts to make before giving up.

func (Command) Debug

func (t Command) Debug() Command

debug a command

func (Command) Directory

func (t Command) Directory(d string) Command

directory to run the command in. must be a relative path.

func (Command) Environ

func (t Command) Environ(k string, v any) Command

append a specific key/value environment variable.

func (Command) EnvironFrom

func (t Command) EnvironFrom(environ ...string) Command

append a set of environment variables in the form KEY=VALUE to the environment.

func (Command) Group

func (t Command) Group(g string) Command

group to run the command as

func (Command) Lenient

func (t Command) Lenient(d bool) Command

directory to run the command in. must be a relative path.

func (Command) MaybeDebug

func (t Command) MaybeDebug(b bool) Command

func (Command) MaybePrivileged

func (t Command) MaybePrivileged(b bool) Command

specialized for As("root") which runs the command as root when true. allows conditional flagging privileged. when false the command is unchanged.

func (Command) New

func (t Command) New(cmd string) Command

New clone the current command configuration and replace the command that will be executed.

func (Command) Newf

func (t Command) Newf(cmd string, options ...any) Command

Newf provides a simple printf form of creating commands.

func (Command) Privileged

func (t Command) Privileged() Command

specialized for As("root") which runs the command as root.

func (Command) Timeout

func (t Command) Timeout(d time.Duration) Command

maximum duration for a command to run. default is 5 minutes.

func (Command) UnsafeEntrypoint

func (t Command) UnsafeEntrypoint(e entrypoint) Command

Internal use only not under compatability promises.

func (Command) UnsafeExec

func (t Command) UnsafeExec(e Execer) Command

func (Command) User

func (t Command) User(u string) Command

user to run the command as

type Execer

type Execer func(ctx context.Context, dir string, environ []string, cmd string, args []string) error

type Recorder

type Recorder struct {
    // contains filtered or unexported fields
}

func NewRecorder

func NewRecorder(cmd *Command) *Recorder

creates a recorder that allows for generating string representations of commands for tests.

func (*Recorder) Hijack

func (t *Recorder) Hijack(cmd *Command) error

func (*Recorder) Record

func (t *Recorder) Record(ctx context.Context, dir string, environ []string, cmd string, args []string) error

func (*Recorder) Result

func (t *Recorder) Result() string

func (*Recorder) Results

func (t *Recorder) Results() []string