1
0
mirror of https://github.com/go-task/task.git synced 2024-12-12 10:45:49 +02:00
task/docs/styleguide.md
2019-11-13 12:34:13 +01:00

2.7 KiB

Styleguide

This is the official Task styleguide for Taskfile.yml files. This guide contains some basic instructions to keep your Taskfile clean and familiar to other users.

This contains general guidelines, but don't necessarely need to be strictly followed. Feel free to disagree and proceed differently in some point if you need or want to. Also, feel free to open issues or pull requests with improvements to this guide.

Use Taskfile.yml and not taskfile.yml

# bad
taskfile.yml


# good
Taskfile.yml

This is important especially for Linux users. Windows and macOS have case insensitive filesystems, so taskfile.yml will end up working, even that not officially supported. On Linux, only Taskfile.yml will work, though.

Use the correct order of keywords

  • version:
  • includes:
  • Configuration ones, like output: and expansions:
  • vars:
  • env:
  • tasks:

Use 2 spaces for indentation

This is the most common convention for YAML files, and Task follows it.

# bad
tasks:
    foo:
        cmds:
            - echo 'foo'


# good
tasks:
  foo:
    cmds:
      - echo 'foo'

Separate with spaces the mains sections

# bad
version: 2
includes:
  docker: ./docker/Taskfile.yml
output: prefixed
expansions: 3
vars:
  FOO: bar
env:
  BAR: baz
tasks:
  # ...


# good
version: 2

includes:
  docker: ./docker/Taskfile.yml

output: prefixed
expansions: 3

vars:
  FOO: bar

env:
  BAR: baz

tasks:
  # ...

Add spaces between tasks

# bad
version: 2

tasks:
  foo:
    cmds:
      - echo 'foo'
  bar:
    cmds:
      - echo 'bar'
  baz:
    cmds:
      - echo 'baz'


# good
version: 2

tasks:
  foo:
    cmds:
      - echo 'foo'

  bar:
    cmds:
      - echo 'bar'

  baz:
    cmds:
      - echo 'baz'

Use upper-case variable names

# bad
version: 2

vars:
  binary_name: myapp

tasks:
  build:
    cmds:
      - go build -o {{.binary_name}} .


# good
version: 2

vars:
  BINARY_NAME: myapp

tasks:
  build:
    cmds:
      - go build -o {{.BINARY_NAME}} .

Don't wrap vars in spaces when templating

# bad
version: 2

tasks:
  greet:
    cmds:
      - echo '{{ .MESSAGE }}'


# good
version: 2

tasks:
  greet:
    cmds:
      - echo '{{.MESSAGE}}'

This convention is also used by most people for any Go templating.

Separate task name words with a dash

# bad
version: 2

tasks:
  do_something_fancy:
    cmds:
      - echo 'Do something'


# good
version: 2

tasks:
  do-something-fancy:
    cmds:
      - echo 'Do something'

Use colon for task namespacing

# good
version: 2

tasks:
  docker:build:
    cmds:
      - docker ...

  docker:run:
    cmds:
      - docker-compose ...

This is also done automatically when using included Taskfiles.