Variables and Substitution
Variables, strings, concatenation, path joining, and substitution using {{…}} are supported:
tmpdir := `mktemp`
version := "0.2.7"
tardir := tmpdir / "awesomesauce-" + version
tarball := tardir + ".tar.gz"
publish:
rm -f {{tarball}}
mkdir {{tardir}}
cp README.md *.c {{tardir}}
tar zcvf {{tarball}} {{tardir}}
scp {{tarball}} me@server.com:release/
rm -rf {{tarball}} {{tardir}}
Joining Paths
The / operator can be used to join two strings with a slash:
foo := "a" / "b"
$ just --evaluate foo
a/b
Note that a / is added even if one is already present:
foo := "a/"
bar := foo / "b"
$ just --evaluate bar
a//b
The / operator uses the / character, even on Windows. Thus, using the / operator should be avoided with paths that use universal naming convention (UNC), i.e., those that start with \?, since forward slashes are not supported with UNC paths.
Escaping {{
To write a recipe containing {{, use {{{{:
braces:
echo 'I {{{{LOVE}} curly braces!'
(An unmatched }} is ignored, so it doesn’t need to be escaped.)
Another option is to put all the text you’d like to escape inside of an interpolation:
braces:
echo '{{'I {{LOVE}} curly braces!'}}'
Yet another option is to use {{ "{{" }}:
braces:
echo 'I {{ "{{" }}LOVE}} curly braces!'