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
。这是amboso
2.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