mirror of
https://github.com/go-task/task.git
synced 2024-12-16 10:59:23 +02:00
228 lines
2.9 KiB
Plaintext
228 lines
2.9 KiB
Plaintext
---
|
|
slug: /styleguide/
|
|
sidebar_position: 10
|
|
---
|
|
|
|
# Style guide
|
|
|
|
This is the official style guide for `Taskfile.yml` files. It provides basic
|
|
instructions for keeping your Taskfiles clean and familiar to other users.
|
|
|
|
This guide contains general guidelines, but they do not necessarily need to be
|
|
followed strictly. Feel free to disagree and do things differently if you need
|
|
or want to. Any improvements to this guide are welcome! Please open an issue or
|
|
create a pull request to contribute.
|
|
|
|
## Use the suggested ordering of the main sections
|
|
|
|
```yaml
|
|
version:
|
|
includes:
|
|
# optional configurations (output, silent, method, run, etc.)
|
|
vars:
|
|
env: # followed or replaced by dotenv
|
|
tasks:
|
|
```
|
|
|
|
## Use two spaces for indentation
|
|
|
|
This is the most common convention for YAML files, and Task follows it.
|
|
|
|
```yaml
|
|
# bad
|
|
tasks:
|
|
foo:
|
|
cmds:
|
|
- echo 'foo'
|
|
|
|
|
|
# good
|
|
tasks:
|
|
foo:
|
|
cmds:
|
|
- echo 'foo'
|
|
```
|
|
|
|
## Separate the main sections with empty lines
|
|
|
|
```yaml
|
|
# bad
|
|
version: '3'
|
|
includes:
|
|
docker: ./docker/Taskfile.yml
|
|
output: prefixed
|
|
vars:
|
|
FOO: bar
|
|
env:
|
|
BAR: baz
|
|
tasks:
|
|
# ...
|
|
|
|
|
|
# good
|
|
version: '3'
|
|
|
|
includes:
|
|
docker: ./docker/Taskfile.yml
|
|
|
|
output: prefixed
|
|
|
|
vars:
|
|
FOO: bar
|
|
|
|
env:
|
|
BAR: baz
|
|
|
|
tasks:
|
|
# ...
|
|
```
|
|
|
|
## Separate tasks with empty lines
|
|
|
|
```yaml
|
|
# bad
|
|
version: '3'
|
|
|
|
tasks:
|
|
foo:
|
|
cmds:
|
|
- echo 'foo'
|
|
bar:
|
|
cmds:
|
|
- echo 'bar'
|
|
baz:
|
|
cmds:
|
|
- echo 'baz'
|
|
|
|
|
|
# good
|
|
version: '3'
|
|
|
|
tasks:
|
|
foo:
|
|
cmds:
|
|
- echo 'foo'
|
|
|
|
bar:
|
|
cmds:
|
|
- echo 'bar'
|
|
|
|
baz:
|
|
cmds:
|
|
- echo 'baz'
|
|
```
|
|
|
|
## Use only uppercase letters for variable names
|
|
|
|
```yaml
|
|
# bad
|
|
version: '3'
|
|
|
|
vars:
|
|
binary_name: myapp
|
|
|
|
tasks:
|
|
build:
|
|
cmds:
|
|
- go build -o {{.binary_name}} .
|
|
|
|
|
|
# good
|
|
version: '3'
|
|
|
|
vars:
|
|
BINARY_NAME: myapp
|
|
|
|
tasks:
|
|
build:
|
|
cmds:
|
|
- go build -o {{.BINARY_NAME}} .
|
|
```
|
|
|
|
## Avoid using whitespace when templating variables
|
|
|
|
```yaml
|
|
# bad
|
|
version: '3'
|
|
|
|
tasks:
|
|
greet:
|
|
cmds:
|
|
- echo '{{ .MESSAGE }}'
|
|
|
|
|
|
# good
|
|
version: '3'
|
|
|
|
tasks:
|
|
greet:
|
|
cmds:
|
|
- echo '{{.MESSAGE}}'
|
|
```
|
|
|
|
This convention is also commonly used in templates for the Go programming
|
|
language.
|
|
|
|
## Use kebab case for task names
|
|
|
|
```yaml
|
|
# bad
|
|
version: '3'
|
|
|
|
tasks:
|
|
do_something_fancy:
|
|
cmds:
|
|
- echo 'Do something'
|
|
|
|
|
|
# good
|
|
version: '3'
|
|
|
|
tasks:
|
|
do-something-fancy:
|
|
cmds:
|
|
- echo 'Do something'
|
|
```
|
|
|
|
## Use a colon to separate the task namespace and name
|
|
|
|
```yaml
|
|
# good
|
|
version: '3'
|
|
|
|
tasks:
|
|
docker:build:
|
|
cmds:
|
|
- docker ...
|
|
|
|
docker:run:
|
|
cmds:
|
|
- docker-compose ...
|
|
```
|
|
|
|
This is also done automatically when using included Taskfiles.
|
|
|
|
## Prefer using external scripts instead of multi-line commands
|
|
|
|
```yaml
|
|
# bad
|
|
version: '3'
|
|
|
|
tasks:
|
|
build:
|
|
cmds:
|
|
- |
|
|
for i in $(seq 1 10); do
|
|
echo $i
|
|
echo "some other complex logic"
|
|
done'
|
|
|
|
# good
|
|
version: '3'
|
|
|
|
tasks:
|
|
build:
|
|
cmds:
|
|
- ./scripts/my_complex_script.sh
|
|
```
|