Z is a simple and useful task runner.
- Simple
- Easy
- Intuitive
- Useful
- Nested tasks
- Default task
- Alias
- Shorthand
- And more...
Via gobinaries
curl -sSL gobinaries.com/zakuro9715/z | sh
By go install
go install github.com/zakuro9715/z
Z is strongly inspired by Robo
- Easy to use
- Simple configuration
- Easy to install
- No nested tasks
- Not enough features
- No default task
- Easy to use
- Run anyware
- Make is not task runner
- Makefile is difficult
- No nested tasks
- Easy to use
- Simple configuration
- No extra tool is required in nodejs project.
- Not suitable for other than nodejs project
- No nested tasks
- script must be one-liner
Task (go-task/task)
- Many features
- Good documentation
- No nested tasks
- Too many features
z tasks... args...
Run with specified shell (default: sh)
tasks:
hello:
run:
- echo hello1
- echo hello2
$ z hello
# It runs
sh -c "echo hello1"
sh -c "echo hello2"
run
can be omitted
tasks:
hello: echo hello
tasks:
hello.world: echo hello world
$ z hello world
hello world
$ z hello.world
hello world
You can specify args and flags. They are passed to each commands
$ z hello world
# It runs
sh -c "echo hello1 world"
sh -c "echo hello2 world"
You can use default task
default: hello.world
tasks:
hello:
tasks:
world: echo hello world
$ z
hello world
tasks:
hello.world: echo hello world
helloworld:
z: hello.world
$z helloworld
hello world
env:
- KEY=VALUE
tasks:
echo: echo $KEY
$ z echo
VALUE
var:
seq: seq 3
tasks:
count: {{seq}} | cat # seq 10
$ z count
1
2
3
You can specify additional PATH
tasks:
hello:
path: ./bin
run: command-in-bin-dir
See also Examples Test
tasks:
compile:
run:
- clang $@
desc: Compile
hooks:
pre: echo Compiling
post: echo Compiled
tasks:
main:
run:
- z -c examples/cc.yaml compile main.c
shell: bash # Shell to run commands
default: hello.world # Default task. hello.world -> z hello world
env:
MESSAGE: message # It used if environment variable does not exist.
var:
value: value
tasks: # Task list
hello: # Task name
desc: Say hello # Task description
run: # Commands to run
- echo hello # `bash -c "echo hello {args}`
- echo bye # `bash -c "echo bye {args}"`
args:
required: true # Required one more arguments
default: you # Default argument
hooks: # hooks
pre: echo saying hello # pre hook
post: echo said hello # post hook
tasks: # Sub task list
script:
run: examples/hello.sh # Run script
script.with_path:
path: examples # Add path
run: hello.sh
python:
shell: python
run: print('hello python')
hello.world: # Sub task shorthand (Task will be 'z hello world')
run:
- z hello -- world # Args are passed all commands
# so it runs 'bash -c "echo hello world"' and 'bash -c "echo bye world"
# after -- is args (not subtask name)
echo: echo # Shorthand command ('run' can be omitted').
echo.twice: # Multi commands can be used
- echo
- echo
echo.env.message: echo $MESSAGE # use env
echo.env.message2:
env: MESSAGE=message2 # task local default env
run: echo $MESSAGE
echo.var.value: echo {{value}} # use var
helloworld: { z: hello.world } # Alias to other task
default: npm.script
tasks:
npm.script: npm run