5 个版本
0.1.4 | 2024年2月26日 |
---|---|
0.1.3 | 2024年2月25日 |
0.1.2 | 2024年2月25日 |
0.1.1 | 2024年2月25日 |
0.1.0 | 2024年2月25日 |
#250 在 开发工具
38 每月下载次数
24KB
393 行
Toke - 基于 TOML 的命令运行器
Toke (TOML Make) 是一个简单的命令运行器,灵感来自 Make,但使用 TOML(Tom's Obvious, Minimal Language)而不是 Makefiles。这个项目是为了娱乐而创建的,作为 Make 的替代品,因为我正在寻找一个简单的命令运行器/构建系统,但不喜欢单的 Makefile 语法。
安装 toke
您可以从 crates.io 获取 toke。
cargo install toke-runner
您也可以使用 cargo 手动编译它。
git clone https://git.olympuslab.net/afonso/toke
cd toke
cargo build --release
可执行文件应位于 target/release/toke
如何使用 toke
Toke 通过读取项目目录中名为 tokefile.toml
的 TOML 文件(或任何类似名称的文件,如 Tokefile.toml
、tokefile
等)来工作。此文件包含变量、目标和它们相应的命令的定义。
您也可以传入一个文件作为默认文件。
toke -f my_custom_named_toke_file
要运行 toke 目标,只需运行 toke target_name_here
例如
toke build
Toke 会读取 TOML 文件,解析变量,然后执行您提供的目标指定的命令。
它还会检查目标中的依赖循环,以防止无限循环。
示例 Tokefile
[vars]
cc = "gcc"
[targets.build]
vars.cc = "clang"
cmd = "${cc} main.c -o main"
[targets.run]
cmd = "./main arg1 arg2"
deps = ["build"]
由于 TOML 有几种定义相同结构的方式,以下是一个上述 TOML 文件的 JSON 表示,以便更容易理解。
只要它的结构与以下 JSON 相同,您就可以以任何您想要的任何方式编写您的 TOML 文件。
{
"vars": {
"cc": "gcc"
},
"targets": {
"build": {
"vars": {
"cc": "clang"
},
"cmd": "${cc} main.c -o main"
},
"run": {
"cmd": "./main arg1 arg2",
"deps": ["build"]
}
}
}
在这个例子中
我们定义了一个变量 cc
,其设置为 "gcc"
。
我们有两个目标:build
和 run
。
build
目标使用 clang 编译代码。
run
目标运行代码,并带有一些参数。它还依赖于 build
目标。
变量
全局变量
您可以在 vars 表中定义全局变量,如上述示例所示。
局部变量
您可以为每个目标指定局部变量。这些局部变量定义在每个目标部分的 vars
键下。如果局部变量名与全局变量匹配,它将覆盖该特定目标的全局变量值。
以下是一个示例
[vars]
cc = "g++"
[target.target1]
vars.cc = "gcc"
cmd="${cc} ${cflags} main.c -o main"
[target.target2]
vars.cc = "clang"
vars.cflags = "-Wall"
cmd="${cc} ${cflags} main.c -o main"
[target.target3]
vars.cflags = "-O3"
cmd="${cc} ${cflags} main.c -o main"
在这个例子中
target1
使用 gcc
作为 cc
变量,覆盖了全局值。
target2
为 cc
变量指定 clang
并将 -Wall
添加到 cflags
。
target3
仅将 cflags
设置为 -O3
。
命令行覆盖
此外,在调用 toke
时,您可以通过命令行参数覆盖全局和局部变量。命令行参数的格式为 VARIABLE=value
。当提供时,这些值将覆盖任何相应的全局或局部变量。
以下是一个使用命令行参数的示例
toke build CC=gcc CFLAGS=-O2
在这个例子中
CC=gcc
覆盖了 cc
变量的值。
CFLAGS=-O2
覆盖了 cflags
变量的值。
这些覆盖允许灵活定制。
贡献
欢迎贡献!请随意提交问题或拉取请求以帮助改进 Toke。
许可
本项目采用 MIT 许可证 - 请参阅 LICENSE 文件以获取详细信息。
Toke 是一个旨在通过 TOML 格式简化构建系统的有趣实验。试试看它是否比传统的构建系统(如 Make)更适合您的项目需求!
依赖项
~3–4.5MB
~79K SLoC