v0.0.68
This commit is contained in:
56
cmdext/builder.go
Normal file
56
cmdext/builder.go
Normal file
@@ -0,0 +1,56 @@
|
||||
package cmdext
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"time"
|
||||
)
|
||||
|
||||
type CommandRunner struct {
|
||||
program string
|
||||
args []string
|
||||
timeout *time.Duration
|
||||
env []string
|
||||
}
|
||||
|
||||
func Runner(program string) *CommandRunner {
|
||||
return &CommandRunner{
|
||||
program: program,
|
||||
args: make([]string, 0),
|
||||
timeout: nil,
|
||||
env: make([]string, 0),
|
||||
}
|
||||
}
|
||||
|
||||
func (r *CommandRunner) Arg(arg string) *CommandRunner {
|
||||
r.args = append(r.args, arg)
|
||||
return r
|
||||
}
|
||||
|
||||
func (r *CommandRunner) Args(arg []string) *CommandRunner {
|
||||
r.args = append(r.args, arg...)
|
||||
return r
|
||||
}
|
||||
|
||||
func (r *CommandRunner) Timeout(timeout time.Duration) *CommandRunner {
|
||||
r.timeout = &timeout
|
||||
return r
|
||||
}
|
||||
|
||||
func (r *CommandRunner) Env(key, value string) *CommandRunner {
|
||||
r.env = append(r.env, fmt.Sprintf("%s=%s", key, value))
|
||||
return r
|
||||
}
|
||||
|
||||
func (r *CommandRunner) RawEnv(env string) *CommandRunner {
|
||||
r.env = append(r.env, env)
|
||||
return r
|
||||
}
|
||||
|
||||
func (r *CommandRunner) Envs(env []string) *CommandRunner {
|
||||
r.env = append(r.env, env...)
|
||||
return r
|
||||
}
|
||||
|
||||
func (r *CommandRunner) Run() (CommandResult, error) {
|
||||
return run(*r)
|
||||
}
|
Reference in New Issue
Block a user