-
-
Notifications
You must be signed in to change notification settings - Fork 719
Description
When writing the Taskfile.yml
many people probably write it like any other yaml, which means values like false
is a boolean, as the yaml spec says: http://yaml.org/type/bool.html
But it turns out to be used as string and when using the template language it's actually "false"
. This is bad for {{if .SOME_VAR}}
for example, which doesn't work, so you have to write {{if eq "true" .SOME_VAR}}
for example, or even a much longer expression given the valid forms of a bool in the spec (e.g. "no", "NO", "No", n", ...).
Note: I found the same issue in a different Go repository: concourse/concourse#294
Unfortunately they only link to a Pivotal tracker and the link is 404, so I don't know if and how they dealt with this issue.
If you explicitly don't want to adhere to the yaml spec (and of course there might be good reasons for it), this behaviour should at least be mentioned in the documentation. Currently the "Variables" section doesn't do this: https://taskfile.org/#/usage?id=variables
Example Taskfile, created with task --init
and then customized:
# github.com/go-task/task
version: '2'
vars:
GREETING: Hello, World!
IS_LIB: false
tasks:
default:
cmds:
- echo "{{.GREETING}}"
- echo "{{.IS_LIB}}"
- echo "{{if .IS_LIB}} error {{else}} ok {{end}}"
- echo "{{if eq "true" .IS_LIB}} error {{else}} ok {{end}}"
silent: true
The output is:
task: No argument given, trying default task
Hello, World!
false
error
ok
task Version: Commit 309cfb14995ec511546726ab607d53c55c803d0f
OS: Ubuntu 14.04