1
0
mirror of https://github.com/go-task/task.git synced 2025-08-10 22:42:19 +02:00

Fixes after updating mvdan.cc/sh

This commit is contained in:
Andrey Nering
2018-09-01 11:02:23 -03:00
parent f4a18e531f
commit 8bdf5c554d
5 changed files with 28 additions and 23 deletions

View File

@@ -2,6 +2,7 @@ package v1
import ( import (
"bytes" "bytes"
"context"
"fmt" "fmt"
"strings" "strings"
"sync" "sync"
@@ -121,7 +122,7 @@ func (c *CompilerV1) HandleDynamicVar(v taskfile.Var) (string, error) {
Stdout: &stdout, Stdout: &stdout,
Stderr: c.Logger.Stderr, Stderr: c.Logger.Stderr,
} }
if err := execext.RunCommand(opts); err != nil { if err := execext.RunCommand(context.Background(), opts); err != nil {
return "", fmt.Errorf(`task: Command "%s" in taskvars file failed: %s`, opts.Command, err) return "", fmt.Errorf(`task: Command "%s" in taskvars file failed: %s`, opts.Command, err)
} }

View File

@@ -2,6 +2,7 @@ package v2
import ( import (
"bytes" "bytes"
"context"
"fmt" "fmt"
"strings" "strings"
"sync" "sync"
@@ -93,7 +94,7 @@ func (c *CompilerV2) HandleDynamicVar(v taskfile.Var) (string, error) {
Stdout: &stdout, Stdout: &stdout,
Stderr: c.Logger.Stderr, Stderr: c.Logger.Stderr,
} }
if err := execext.RunCommand(opts); err != nil { if err := execext.RunCommand(context.Background(), opts); err != nil {
return "", fmt.Errorf(`task: Command "%s" in taskvars file failed: %s`, opts.Command, err) return "", fmt.Errorf(`task: Command "%s" in taskvars file failed: %s`, opts.Command, err)
} }

View File

@@ -13,7 +13,6 @@ import (
// RunCommandOptions is the options for the RunCommand func // RunCommandOptions is the options for the RunCommand func
type RunCommandOptions struct { type RunCommandOptions struct {
Context context.Context
Command string Command string
Dir string Dir string
Env []string Env []string
@@ -28,7 +27,7 @@ var (
) )
// RunCommand runs a shell command // RunCommand runs a shell command
func RunCommand(opts *RunCommandOptions) error { func RunCommand(ctx context.Context, opts *RunCommandOptions) error {
if opts == nil { if opts == nil {
return ErrNilOptions return ErrNilOptions
} }
@@ -47,20 +46,27 @@ func RunCommand(opts *RunCommandOptions) error {
return err return err
} }
r := interp.Runner{ r, err := interp.New(
Context: opts.Context, interp.Dir(opts.Dir),
Dir: opts.Dir, interp.Env(env),
Env: env,
Exec: interp.DefaultExec, interp.Module(interp.DefaultExec),
Open: interp.OpenDevImpls(interp.DefaultOpen), interp.Module(interp.OpenDevImpls(interp.DefaultOpen)),
Stdin: opts.Stdin, interp.StdIO(opts.Stdin, opts.Stdout, opts.Stderr),
Stdout: opts.Stdout, )
Stderr: opts.Stderr, if err != nil {
}
if err = r.Reset(); err != nil {
return err return err
} }
return r.Run(p) return r.Run(ctx, p)
}
// IsExitError returns true the given error is an exis status error
func IsExitError(err error) bool {
switch err.(type) {
case interp.ExitStatus, interp.ShellExitStatus:
return true
default:
return false
}
} }

View File

@@ -71,8 +71,7 @@ func getStatusChecker(t *taskfile.Task) (status.Checker, error) {
func isTaskUpToDateStatus(ctx context.Context, t *taskfile.Task) (bool, error) { func isTaskUpToDateStatus(ctx context.Context, t *taskfile.Task) (bool, error) {
for _, s := range t.Status { for _, s := range t.Status {
err := execext.RunCommand(&execext.RunCommandOptions{ err := execext.RunCommand(ctx, &execext.RunCommandOptions{
Context: ctx,
Command: s, Command: s,
Dir: t.Dir, Dir: t.Dir,
Env: getEnviron(t), Env: getEnviron(t),

View File

@@ -19,7 +19,6 @@ import (
"github.com/Masterminds/semver" "github.com/Masterminds/semver"
"golang.org/x/sync/errgroup" "golang.org/x/sync/errgroup"
"mvdan.cc/sh/interp"
) )
const ( const (
@@ -198,7 +197,7 @@ func (e *Executor) RunTask(ctx context.Context, call taskfile.Call) error {
e.Logger.VerboseErrf("task: error cleaning status on error: %v", err2) e.Logger.VerboseErrf("task: error cleaning status on error: %v", err2)
} }
if _, ok := err.(interp.ExitCode); ok && t.IgnoreError { if execext.IsExitError(err) && t.IgnoreError {
e.Logger.VerboseErrf("task: task error ignored: %v", err) e.Logger.VerboseErrf("task: task error ignored: %v", err)
continue continue
} }
@@ -243,8 +242,7 @@ func (e *Executor) runCommand(ctx context.Context, t *taskfile.Task, call taskfi
defer stdOut.Close() defer stdOut.Close()
defer stdErr.Close() defer stdErr.Close()
err := execext.RunCommand(&execext.RunCommandOptions{ err := execext.RunCommand(ctx, &execext.RunCommandOptions{
Context: ctx,
Command: cmd.Cmd, Command: cmd.Cmd,
Dir: t.Dir, Dir: t.Dir,
Env: getEnviron(t), Env: getEnviron(t),
@@ -252,7 +250,7 @@ func (e *Executor) runCommand(ctx context.Context, t *taskfile.Task, call taskfi
Stdout: stdOut, Stdout: stdOut,
Stderr: stdErr, Stderr: stdErr,
}) })
if _, ok := err.(interp.ExitCode); ok && cmd.IgnoreError { if execext.IsExitError(err) && cmd.IgnoreError {
e.Logger.VerboseErrf("task: command error ignored: %v", err) e.Logger.VerboseErrf("task: command error ignored: %v", err)
return nil return nil
} }