#execute-command #build #task #build-tool #makefile #make #just

构建 checkexec

条件性地在CLI(如Make,作为一个独立工具)中运行命令

12个版本

0.2.0 2021年12月14日
0.1.16 2021年12月13日
0.1.6 2021年11月19日

#371 in 构建工具

MIT 许可证

13KB
179

GitHub Contributors Stars Build Status Downloads Crates.io

Checkexec

checkexec 是一个工具,只有当依赖列表中的文件被更新时才条件性地执行命令。

该工具提供类似 make 的独立可执行行为,其中只有当任何依赖项被更新时才运行命令。像 make 一样,checkexec 只有在依赖项的修改时间晚于目标文件的修改时间时才运行命令。

用法

参数为:<target> <dependencies...> -- <command>-- 是必需的分隔符。

checkexec build/my-bin src/my-program.c -- cc -o build/my-bin src/my-program.c

checkexec 直接执行命令,因此不支持shell构造如 '&&' 和 '||'。您可以使用 /bin/bash -c 作为命令,但转义很复杂。您可能更好的选择是使用两次 checkexec 调用。

您可以使用 --infer 推断依赖列表,其中checkexec将检查 command> 的参数中的可访问路径。如果找不到文件,--infer 将失败。

checkexec build/my-bin --infer -- cc -o build/my-bin src/my-program.c

安装

cargo install checkexec

使用说明

checkexec 非常适合从其他文件构建文件的情况。您不必依赖特定于生态系统的工具,可以将 checkexec 作为任何构建工具的一部分。以下是一些示例

  • 您在构建命令中构建、调整大小或采样图像,但除非需要,否则不想重新构建它们。
  • 您在Python、Rust、Node(或任何其他)构建过程中构建C库。
  • 您构建Sass/Less/SCSS文件,并且不想不必要地重新构建它们。

checkexec 与以下工具搭配良好

  • just 结合,创建了一个模块化和现代的构建过程和命令执行器。 just 解决了 make 中的许多问题,而 checkexec 恢复了 make 的条件重建功能。
  • fd,使得指定依赖文件列表变得容易。例如这里
# Only run your command if a rust file has changed. Note cargo does approximately the 
# same thing natively, but you can easily tailor this structure to a custom case.
checkexec target/debug/hello $(fd -e rs . src) -- cargo build

退出码

checkexec 的退出码表现符合预期,具体来说

  • 0(成功)如果命令未运行(即目标是最新的)
  • 1 如果提供的依赖项或命令未找到
  • 否则,当命令运行时,checkexec 将传递命令的退出码。

贡献

贡献使得开源社区成为一个如此美妙的学习、灵感和创造的地方。您做出的任何贡献都将被 大力赞赏

如果您有改进的建议,请克隆存储库并创建一个拉取请求。您也可以简单地打开一个带有 "enhancement" 标签的问题。别忘了给项目加星标!

(回到顶部)

依赖项

约2MB
约30K SLoC