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

Merge branch 'master' into master

This commit is contained in:
Andrey Nering
2018-08-05 11:32:07 -03:00
committed by GitHub
6 changed files with 44 additions and 1 deletions

View File

@@ -635,6 +635,11 @@ tasks:
- echo "This will print nothing" > /dev/null - echo "This will print nothing" > /dev/null
``` ```
## Dry Run Mode
Dry run mode (`--dry`) compiles and steps through each task, printing the commands
that would be run without executing them. This is useful for debugging your Taskfiles.
## Ignore errors ## Ignore errors
You have the option to ignore errors during command execution. You have the option to ignore errors during command execution.

View File

@@ -17,7 +17,7 @@ var (
version = "master" version = "master"
) )
const usage = `Usage: task [-ilfwvsd] [--init] [--list] [--force] [--watch] [--verbose] [--silent] [--dir] [task...] const usage = `Usage: task [-ilfwvsd] [--init] [--list] [--force] [--watch] [--verbose] [--silent] [--dir] [--dry] [task...]
Runs the specified task(s). Falls back to the "default" task if no task name Runs the specified task(s). Falls back to the "default" task if no task name
was specified, or lists all tasks if an unknown task name was specified. was specified, or lists all tasks if an unknown task name was specified.
@@ -55,6 +55,7 @@ func main() {
watch bool watch bool
verbose bool verbose bool
silent bool silent bool
dry bool
dir string dir string
) )
@@ -66,6 +67,7 @@ func main() {
pflag.BoolVarP(&watch, "watch", "w", false, "enables watch of the given task") pflag.BoolVarP(&watch, "watch", "w", false, "enables watch of the given task")
pflag.BoolVarP(&verbose, "verbose", "v", false, "enables verbose mode") pflag.BoolVarP(&verbose, "verbose", "v", false, "enables verbose mode")
pflag.BoolVarP(&silent, "silent", "s", false, "disables echoing") pflag.BoolVarP(&silent, "silent", "s", false, "disables echoing")
pflag.BoolVar(&dry, "dry", false, "compiles and prints tasks in the order that they would be run, without executing them")
pflag.StringVarP(&dir, "dir", "d", "", "sets directory of execution") pflag.StringVarP(&dir, "dir", "d", "", "sets directory of execution")
pflag.Parse() pflag.Parse()
@@ -91,6 +93,7 @@ func main() {
Verbose: verbose, Verbose: verbose,
Silent: silent, Silent: silent,
Dir: dir, Dir: dir,
Dry: dry,
Context: getSignalContext(), Context: getSignalContext(),

View File

@@ -12,6 +12,7 @@ function __list() {
_arguments \ _arguments \
'(-d --dir)'{-d,--dir}': :_files' \ '(-d --dir)'{-d,--dir}': :_files' \
'(--dry)'--dry \
'(-f --force)'{-f,--force} \ '(-f --force)'{-f,--force} \
'(-i --init)'{-i,--init} \ '(-i --init)'{-i,--init} \
'(-l --list)'{-l,--list} \ '(-l --list)'{-l,--list} \

View File

@@ -35,6 +35,7 @@ type Executor struct {
Watch bool Watch bool
Verbose bool Verbose bool
Silent bool Silent bool
Dry bool
Context context.Context Context context.Context
@@ -211,6 +212,10 @@ func (e *Executor) runCommand(ctx context.Context, t *taskfile.Task, call taskfi
e.Logger.Errf(cmd.Cmd) e.Logger.Errf(cmd.Cmd)
} }
if e.Dry {
return nil
}
stdOut := e.Output.WrapWriter(e.Stdout, t.Prefix) stdOut := e.Output.WrapWriter(e.Stdout, t.Prefix)
stdErr := e.Output.WrapWriter(e.Stderr, t.Prefix) stdErr := e.Output.WrapWriter(e.Stderr, t.Prefix)
defer stdOut.Close() defer stdOut.Close()

View File

@@ -455,3 +455,26 @@ func TestExpand(t *testing.T) {
assert.NoError(t, e.Run(taskfile.Call{Task: "pwd"})) assert.NoError(t, e.Run(taskfile.Call{Task: "pwd"}))
assert.Equal(t, home, strings.TrimSpace(buff.String())) assert.Equal(t, home, strings.TrimSpace(buff.String()))
} }
func TestDry(t *testing.T) {
const dir = "testdata/dry"
file := filepath.Join(dir, "file.txt")
_ = os.Remove(file)
var buff bytes.Buffer
e := task.Executor{
Dir: dir,
Stdout: &buff,
Stderr: &buff,
Dry: true,
}
assert.NoError(t, e.Setup())
assert.NoError(t, e.Run(taskfile.Call{Task: "build"}))
assert.Equal(t, "touch file.txt", strings.TrimSpace(buff.String()))
if _, err := os.Stat(file); err == nil {
t.Errorf("File should not exist %s", file)
}
}

6
testdata/dry/Taskfile.yml vendored Normal file
View File

@@ -0,0 +1,6 @@
version: '2'
tasks:
build:
cmds:
- touch file.txt