9 个版本

新版本 0.2.16 2024年8月10日
0.2.15 2024年7月3日
0.2.14 2024年6月21日
0.2.9 2024年3月26日
0.0.4 2023年11月30日

#40 in 构建工具

Download history 142/week @ 2024-04-22 23/week @ 2024-04-29 9/week @ 2024-05-20 176/week @ 2024-06-17 7/week @ 2024-06-24 139/week @ 2024-07-01 64/week @ 2024-07-29 92/week @ 2024-08-05

每月 156 次下载

GPL-3.0-only

240KB
4.5K SLoC

invil

Latest version

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
  • C头文件生成:完全支持 (*)

    • 原始实现以预格式化的字符串打印时间。
  • 测试模式:完全支持 (*)

    • 运行测试目录中找到的可执行文件
    • 处理测试宏标志以在所有有效查询上运行
    • 使用 -b 记录测试输出
      • 不符合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
  • 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提交信息
  • --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