Naming rules
It's recommended that you name your goals using alphanumeric chars + underscore.
However, it's possible to name a goal any way you want provided that you apply proper escaping:
@goal 'name with spaces' # all chars between '' have literal meaning, same as in shell, ' itself is not allowed in it
@goal $'name that contains \' single quote' # if you need to have ' in a string, use dollar-strings and escape it
@goal usual_name
Now ./makesure -l
gives:
Available goals:
'name with spaces'
$'name that contains \' single quote'
usual_name
Note, how goal names are already escaped in output. This is to make it easier for you to call it directly:
./makesure $'name that contains \' single quote'
Same naming rules apply to other directives (like @doc
).
Usually you won't need this escaping tricks often, but they can be especially in use for @glob
goals if the relevant files have spaces in them:
@goal @glob 'file\ with\ spaces*.txt'
@goal other
@depends_on 'file with spaces1.txt'
More info on this topic is covered in the issue.