1
0
mirror of https://github.com/go-task/task.git synced 2025-01-20 04:59:37 +02:00

Task: Add interactive parameter

Add the task parameter "interactive" to force interleaved output in order
to make interactive CLI apps work.

Feature request in #217

TODO:
* Update documentation

Signed-off-by: Marcello Sylvester Bauer <sylv@sylv.io>
This commit is contained in:
Marcello Sylvester Bauer 2021-09-01 18:28:38 +02:00
parent 50e5813222
commit 2dc181c75e
3 changed files with 10 additions and 0 deletions

View File

@ -417,6 +417,12 @@ func (e *Executor) runCommand(ctx context.Context, t *taskfile.Task, call taskfi
stdOut := e.Output.WrapWriter(e.Stdout, t.Prefix)
stdErr := e.Output.WrapWriter(e.Stderr, t.Prefix)
if t.Interactive {
stdOut = output.Interleaved{}.WrapWriter(e.Stdout, t.Prefix)
stdErr = output.Interleaved{}.WrapWriter(e.Stderr, t.Prefix)
}
defer func() {
if _, ok := stdOut.(*os.File); !ok {
if closer, ok := stdOut.(io.Closer); ok {

View File

@ -19,6 +19,7 @@ type Task struct {
Vars *Vars
Env *Vars
Silent bool
Interactive bool
Method string
Prefix string
IgnoreError bool
@ -59,6 +60,7 @@ func (t *Task) UnmarshalYAML(unmarshal func(interface{}) error) error {
Vars *Vars
Env *Vars
Silent bool
Interactive bool
Method string
Prefix string
IgnoreError bool `yaml:"ignore_error"`
@ -80,6 +82,7 @@ func (t *Task) UnmarshalYAML(unmarshal func(interface{}) error) error {
t.Vars = task.Vars
t.Env = task.Env
t.Silent = task.Silent
t.Interactive = task.Interactive
t.Method = task.Method
t.Prefix = task.Prefix
t.IgnoreError = task.IgnoreError

View File

@ -56,6 +56,7 @@ func (e *Executor) compiledTask(call taskfile.Call, evaluateShVars bool) (*taskf
Vars: nil,
Env: nil,
Silent: origTask.Silent,
Interactive: origTask.Interactive,
Method: r.Replace(origTask.Method),
Prefix: r.Replace(origTask.Prefix),
IgnoreError: origTask.IgnoreError,