From 3e5cd6cdfdef390d5c7bc967e3309ff3eb5f26d2 Mon Sep 17 00:00:00 2001 From: Pete Davison Date: Mon, 13 May 2024 13:37:50 +0000 Subject: [PATCH] fix: prompt check should come after preconditions and fingerprinting --- task.go | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/task.go b/task.go index a19d7ba2..bcd4bac5 100644 --- a/task.go +++ b/task.go @@ -183,16 +183,6 @@ func (e *Executor) RunTask(ctx context.Context, call *ast.Call) error { release := e.acquireConcurrencyLimit() defer release() - if t.Prompt != "" { - if err := e.Logger.Prompt(logger.Yellow, t.Prompt, "n", "y", "yes"); errors.Is(err, logger.ErrNoTerminal) { - return &errors.TaskCancelledNoTerminalError{TaskName: call.Task} - } else if errors.Is(err, logger.ErrPromptCancelled) { - return &errors.TaskCancelledByUserError{TaskName: call.Task} - } else if err != nil { - return err - } - } - return e.startExecution(ctx, t, func(ctx context.Context) error { e.Logger.VerboseErrf(logger.Magenta, "task: %q started\n", call.Task) if err := e.runDeps(ctx, t); err != nil { @@ -238,6 +228,16 @@ func (e *Executor) RunTask(ctx context.Context, call *ast.Call) error { } } + if t.Prompt != "" { + if err := e.Logger.Prompt(logger.Yellow, t.Prompt, "n", "y", "yes"); errors.Is(err, logger.ErrNoTerminal) { + return &errors.TaskCancelledNoTerminalError{TaskName: call.Task} + } else if errors.Is(err, logger.ErrPromptCancelled) { + return &errors.TaskCancelledByUserError{TaskName: call.Task} + } else if err != nil { + return err + } + } + if err := e.mkdir(t); err != nil { e.Logger.Errf(logger.Red, "task: cannot make directory %q: %v\n", t.Dir, err) }