Is this the best way to create a list (that can be empty) for use with templates?
I need to do
echo ""
and use initial
because if the script in VENV_TO_INSTALL_STR returns nothing, splitList would create a list with one item of an empty string (this causes problems with range
, for example). To work around this I use initial
, which in this case would return an empty list, however, if the shell script prints some items, that would drop one of those, so I always add an empty echo to account for that case.
Is there a better way of handling this? Also, is there any way to use if statements in ref: keys?
Edit:
I think this parses the stuff in ref: keys: https://github.com/go-task/task/blob/27056a9827ca36f44df72cbd89a98c77c101cb07/internal/templater/templater.go#L47
I tried tricking it by doing }}{{ [if statement stuff] }}{{
but I kept getting various errors, seems like it is expecting it to be only one {{ }} node? I also checked if they can be embedded in parenthesis, but that also didn't work out.Solution:Jump to solution
You could use
compact
instead of initial
. This would remove any empty items from your array. Alternatively, you can build a JSON string and call fromJson
. There are probably other ways too.
Regarding ref
. By design, it only accepts a single ActionNode
(i.e. One set of {{...}}
) so if
statements are not possible. ref
is designed for you to be able to refer to other variables while maintaining their type, not for logic. It is actually a side-effect of the templating engine that functions are available for use in ref
, but we felt this was acceptable/useful....1 Reply
Solution
You could use
compact
instead of initial
. This would remove any empty items from your array. Alternatively, you can build a JSON string and call fromJson
. There are probably other ways too.
Regarding ref
. By design, it only accepts a single ActionNode
(i.e. One set of {{...}}
) so if
statements are not possible. ref
is designed for you to be able to refer to other variables while maintaining their type, not for logic. It is actually a side-effect of the templating engine that functions are available for use in ref
, but we felt this was acceptable/useful.