9 个版本
| 新版本 0.2.16 | 2024年8月10日 |
|---|---|
| 0.2.15 | 2024年7月3日 |
| 0.2.14 | 2024年6月21日 |
| 0.2.9 |
|
| 0.0.4 |
|
#40 in 构建工具
每月 156 次下载
240KB
4.5K SLoC
invil
amboso 的 Rust 实现,一个简单的封装 make 的构建工具。
目录
这是什么?
这是 amboso 的 Rust 版本,amboso 是一个基本的构建工具,封装了 make 并支持 git 标签。
Invil 可以用于
- 自动化构建一个存储库管理的 git 标签版本列表(或者也可以是带有完整目录复制的简单标签版本)。
- 理想情况下,构建命令应该尽可能短,如
invil build。
- 理想情况下,构建命令应该尽可能短,如
- 运行存储库管理的目录的测试,并进行输出比较。
- 使用
invil init <DIR>生成支持构建工具的新项目 - 生成包含项目信息的基本头文件+实现,例如当前提交的时间
与原始实现(amboso 2.0.6)相当,(*)。有关更多支持信息,请参阅下一节。有关 amboso 2.0.4 扩展的信息,请参阅本节。
目前,仅支持 C 项目。有关 WIP python 支持的信息,请参阅本节。README 仍主要引用 ambosoC 内核的使用。内部提供不同的构建模式,具体取决于您的 autotool 构建支持程度。
- 基本模式:单个
gcc调用。在未来版本中,这可能会扩展到至少提供传递参数给编译器的支持。 - Make模式:对于所有版本高于指定提供make支持的版本,
invil将期望一个已准备好的Makefile,在调用make时正确构建目标二进制文件。 - Automake模式:对于所有版本高于指定提供automake支持的版本,
invil将期望一个Makefile.am和一个configure.ac,以便可以生成与Make模式具有相同假设的Makefile。
有关 stego.lock 文件的信息,请参阅有关它的 amboso 信息。有关 anvil 工具的更多信息,请参阅 amboso 维基。正在进行中。
支持的amboso功能
-
符合bash实现的基本参数解析
-
amboso目录的默认值相同(
./bin)。 -
使用与bash实现兼容的逻辑解析
stego.lock -
基本模式:完全支持
- 原始实现本身不期望为基本模式进行autotools准备,但这可以很容易地完成。
-
Git模式:完全支持
- 原始实现本身期望git模式标签包含一个位于仓库根目录的
Makefile。
- 原始实现本身期望git模式标签包含一个位于仓库根目录的
-
C头文件生成:完全支持 (*)
- 原始实现以预格式化的字符串打印时间。
-
测试模式:完全支持 (*)
- 运行测试目录中找到的可执行文件
- 处理测试宏标志以在所有有效查询上运行
- 使用
-b记录测试输出- 不符合amboso <1.9.7期望:缺少尾随
$。
- 不符合amboso <1.9.7期望:缺少尾随
-
传递configure参数:完全支持
- 不符合amboso <1.9.9期望:-C标志直接传递参数,而不是通过读取文件。
-
子命令
- build 快速构建当前模式下的最新版本
- init 使用amboso准备新项目
- version 打印invil版本
-
注意
- 截至版本
0.1.6,在构建操作中默认调用make rebuild。这是amboso2.x的预期行为。要恢复到1.x原始行为并仅调用make,请使用-R或--no-rebuild运行。
- 截至版本
标志支持状态
- 基本环境标志:
-D,-K,-M,-S,-E - 时钟标志:
-Y <startTime> - Linter模式:
-x- 仅进行lint:
-l - 报告lex:
-L
- 仅进行lint:
- C头文件生成模式:
-G(详细信息为空) - 详细标志:
-V - 测试宏:
-t - 测试模式:
-T - Git模式:
-g - 基本模式:
-B - 构建:
-b - 运行:
-r - 初始化:
-i - 删除:
-d - 清除:
-p - 帮助:
-h - 详细帮助:
-H - 版本:
-v - 列出当前模式的标签:
-l - 列出git/base模式的标签:
-L - 静默标志:
-q - 监视标志:
-w - 保修标志:
-W - 忽略gitcheck标志:
-X - 静音:
-s - 传递配置参数:
-C - 运行make pack:
-z - 不重新构建:
-R - 记录运行:
-J- 输出到
./anvil.log。与未明确忽略该文件的仓库不兼容。
- 输出到
- 无颜色:
-P - 强制构建:
-F - 关闭扩展:
-e(仅相对2.0.0版本) - 未提供参数时运行make
相对amboso 1.9.9的扩展
- 在
make构建模式下,默认调用make rebuild-
--no-rebuild禁用make重建并仅运行make
-
-
--logged将完整日志输出到文件- 输出到
./anvil.log。与未明确忽略该文件的仓库不兼容。
- 输出到
-
-G标志还包括- 构建OS的字符串(来自
env::consts::OS) - HEAD提交信息
- 构建OS的字符串(来自
-
--no-color禁用彩色输出 -
--force覆盖已准备的目标
amboso 2.0的扩展
- 使用
-e, --strict关闭扩展 - 忽略当前工作目录中缺失的仓库
-
-a设置兼容级别 -
-k设置项目类型 -
-O设置stego.lock目录(默认为工作目录)
扩展的amboso功能
实验性2.1版本
这些功能是实验性的,可能随时更改。要启用它们,请将--features="anvilPy"添加到您的构建/安装命令中。
- 使用"anvilPy"内核支持Python项目
- 期望在
stego..lock旁边存在一个合适的pyproject.toml - 对几乎所有标志都提供实验性支持
- 只有当从
stego..lock本身提供时才受支持 - 示例用法(确保这在你
stego..lock中)[ anvil ] version = "2.1.0" kern = "anvilPy"
- 期望在
- 使用
--strict运行时拒绝实验性内核- 原始实现尚未准备好支持此扩展。
看看它的表现
要查看这件美妙的艺术品是如何工作的,请运行
cd try-anvil
./try_anvil_auto
有关此测试脚本的信息,请参阅amboso: 链接
我们对版本进行了一些修改,以便实际上让cargo构建我们想要符号链接的anvil的二进制文件的发布版本。
基本基准测试
查看此页面以获取运行时的基本基准测试,与bash amboso实现进行比较。
待办事项
- 通过在基本模式下处理autotools来扩展原始实现
- 使用自定义格式改进日志记录
- 改进糟糕的git模式命令链
- 当前的实现很天真,只是调用了一堆
Command来以难看的缩进来管道化git操作。 - 求助于shell命令是糟糕的,并且违背了这次重写的目的。
- 我们已经有git2 crate来处理git命令,应该能够减少命令封装的数量。
- 当前的实现很天真,只是调用了一堆
依赖关系
~13-23MB
~422K SLoC