This commit is contained in:
2023-01-30 19:55:55 +01:00
parent 72d6b538f7
commit ff08d5f180
4 changed files with 230 additions and 20 deletions

View File

@@ -6,18 +6,20 @@ import (
)
type CommandRunner struct {
program string
args []string
timeout *time.Duration
env []string
program string
args []string
timeout *time.Duration
env []string
listener []CommandListener
}
func Runner(program string) *CommandRunner {
return &CommandRunner{
program: program,
args: make([]string, 0),
timeout: nil,
env: make([]string, 0),
program: program,
args: make([]string, 0),
timeout: nil,
env: make([]string, 0),
listener: make([]CommandListener, 0),
}
}
@@ -51,6 +53,21 @@ func (r *CommandRunner) Envs(env []string) *CommandRunner {
return r
}
func (r *CommandRunner) Listen(lstr CommandListener) *CommandRunner {
r.listener = append(r.listener, lstr)
return r
}
func (r *CommandRunner) ListenStdout(lstr func(string)) *CommandRunner {
r.listener = append(r.listener, genericCommandListener{_readStdoutLine: &lstr})
return r
}
func (r *CommandRunner) ListenStderr(lstr func(string)) *CommandRunner {
r.listener = append(r.listener, genericCommandListener{_readStderrLine: &lstr})
return r
}
func (r *CommandRunner) Run() (CommandResult, error) {
return run(*r)
}