From ea933bcc554ce0a0a8a3351edc2918ebc532e90e Mon Sep 17 00:00:00 2001 From: Timothy Rule <34501912+trulede@users.noreply.github.com> Date: Fri, 12 Dec 2025 22:28:20 +0100 Subject: [PATCH] fix: support error_ignore for a task call (#2552) --- task.go | 8 +++++--- taskfile/ast/cmd.go | 1 + 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/task.go b/task.go index 71f5e6f5..489ef7e5 100644 --- a/task.go +++ b/task.go @@ -311,10 +311,12 @@ func (e *Executor) runCommand(ctx context.Context, t *ast.Task, call *Call, i in defer reacquire() err := e.RunTask(ctx, &Call{Task: cmd.Task, Vars: cmd.Vars, Silent: cmd.Silent, Indirect: true}) - if err != nil { - return err + var exitCode interp.ExitStatus + if errors.As(err, &exitCode) && cmd.IgnoreError { + e.Logger.VerboseErrf(logger.Yellow, "task: [%s] task error ignored: %v\n", t.Name(), err) + return nil } - return nil + return err case cmd.Cmd != "": if !shouldRunOnCurrentPlatform(cmd.Platforms) { e.Logger.VerboseOutf(logger.Yellow, "task: [%s] %s not for current platform - ignored\n", t.Name(), cmd.Cmd) diff --git a/taskfile/ast/cmd.go b/taskfile/ast/cmd.go index b590e6bb..d1bfb0a9 100644 --- a/taskfile/ast/cmd.go +++ b/taskfile/ast/cmd.go @@ -93,6 +93,7 @@ func (c *Cmd) UnmarshalYAML(node *yaml.Node) error { c.Vars = cmdStruct.Vars c.For = cmdStruct.For c.Silent = cmdStruct.Silent + c.IgnoreError = cmdStruct.IgnoreError return nil }