函数
just 提供了一些内置函数,在编写配方时可能很有用。
系统信息
arch()— 指令集结构。可能的值是:"aarch64","arm","asmjs","hexagon","mips","msp430","powerpc","powerpc64","s390x","sparc","wasm32","x86","x86_64", 和"xcore"。os()— 操作系统,可能的值是:"android","bitrig","dragonfly","emscripten","freebsd","haiku","ios","linux","macos","netbsd","openbsd","solaris", 和"windows"。os_family()— 操作系统系列;可能的值是:"unix"和"windows"。
例如:
system-info:
@echo "This is an {{arch()}} machine".
$ just system-info
This is an x86_64 machine
os_family() 函数可以用来创建跨平台的 justfile,使其可以在不同的操作系统上工作。一个例子,见 cross-platform.just 文件。
环境变量
env_var(key)— 获取名称为key的环境变量,如果不存在则终止。
home_dir := env_var('HOME')
test:
echo "{{home_dir}}"
$ just
/home/user1
env_var_or_default(key, default)— 获取名称为key的环境变量,如果不存在则返回default。
调用目录
invocation_directory()- 获取just被调用时当前目录所对应的绝对路径,在just改变路径并执行相应命令前。
例如,要对 “当前目录” 下的文件调用 rustfmt(从用户/调用者的角度看),使用以下规则:
rustfmt:
find {{invocation_directory()}} -name \*.rs -exec rustfmt {} \;
另外,如果你的命令需要从当前目录运行,你可以使用如下方式:
build:
cd {{invocation_directory()}}; ./some_script_that_needs_to_be_run_from_here
Justfile 和 Justfile 目录
-
justfile()- 取得当前justfile的路径。 -
justfile_directory()- 取得当前justfile文件父目录的路径。
例如,运行一个相对于当前 justfile 位置的命令:
script:
./{{justfile_directory()}}/scripts/some_script
Just 可执行程序
just_executable()-just可执行文件的绝对路径。
例如:
executable:
@echo The executable is at: {{just_executable()}}
$ just
The executable is at: /bin/just
字符串处理
quote(s)- 用'\''替换所有的单引号,并在s的首尾添加单引号。这足以为许多 Shell 转义特殊字符,包括大多数 Bourne Shell 的后代。replace(s, from, to)- 将s中的所有from替换为to。replace_regex(s, regex, replacement)- 将s中所有的regex替换为replacement。正则表达式由 Rustregex包 提供。参见 语法文档 以了解使用示例。trim(s)- 去掉s的首尾空格。trim_end(s)- 去掉s的尾部空格。trim_end_match(s, substr)- 删除与substr匹配的s的后缀。trim_end_matches(s, substr)- 反复删除与substr匹配的s的后缀。trim_start(s)- 去掉s的首部空格。trim_start_match(s, substr)- 删除与substr匹配的s的前缀。trim_start_matches(s, substr)- 反复删除与substr匹配的s的前缀。
大小写转换
capitalize(s)1.7.0 - 将s的第一个字符转换成大写字母,其余的转换成小写字母。kebabcase(s)1.7.0 - 将s转换为kebab-case。lowercamelcase(s)1.7.0 - 将s转换为小驼峰形式:lowerCamelCase。lowercase(s)- 将s转换为全小写形式。shoutykebabcase(s)1.7.0 - 将s转换为SHOUTY-KEBAB-CASE。shoutysnakecase(s)1.7.0 - 将s转换为SHOUTY_SNAKE_CASE。snakecase(s)1.7.0 - 将s转换为snake_case。titlecase(s)1.7.0 - 将s转换为Title Case。uppercamelcase(s)1.7.0 - 将s转换为UpperCamelCase。uppercase(s)- 将s转换为大写形式。
路径操作
非可靠的
absolute_path(path)- 将当前工作目录中到相对路径path的路径转换为绝对路径。在/foo目录通过absolute_path("./bar.txt")可以得到/foo/bar.txt。extension(path)- 获取path的扩展名。extension("/foo/bar.txt")结果为txt。file_name(path)- 获取path的文件名,去掉任何前面的目录部分。file_name("/foo/bar.txt")的结果为bar.txt。file_stem(path)- 获取path的文件名,不含扩展名。file_stem("/foo/bar.txt")的结果为bar。parent_directory(path)- 获取path的父目录。parent_directory("/foo/bar.txt")的结果为/foo。without_extension(path)- 获取path不含扩展名部分。without_extension("/foo/bar.txt")的结果为/foo/bar。
这些函数可能会失败,例如,如果一个路径没有扩展名,则将停止执行。
可靠的
clean(path)- 通过删除多余的路径分隔符、中间的.和..来简化path。clean("foo//bar")结果为foo/bar,clean("foo/..")为.,clean("foo/./bar")结果为foo/bar。join(a, b…)- 这个函数在 Unix 上使用/,在 Windows 上使用\,这可能会导致非预期的行为。/操作符,例如,a / b,总是使用/,应该被考虑作为替代,除非在 Windows 上特别指定需要\。 将路径a和 路径b拼接在一起。join("foo/bar", "baz")结果为foo/bar/baz。它接受两个或多个参数。
文件系统访问
path_exists(path)- 如果路径指向一个存在的文件或目录,则返回true,否则返回false。也会遍历符号链接,如果路径无法访问或指向一个无效的符号链接,则返回false。
错误报告
error(message)- 终止执行并向用户报告错误message。
UUID 和哈希值生成
sha256(string)- 以十六进制字符串形式返回string的 SHA-256 哈希值。sha256_file(path)- 以十六进制字符串形式返回path处的文件的 SHA-256 哈希值。uuid()- 返回一个随机生成的 UUID。