c2rust-config-0.1.0 is not a library.
c2rust-config
一个用于 c2rust 翻译工作的 Rust 配置管理工具。该工具管理存储在 .c2rust/config.toml 文件中的配置数据。
安装
# 二进制文件将位于 target/release/c2rust-config
使用方法
该工具提供一个 config 子命令, 包含三种配置模式:
--global:全局配置(例如编译器设置)--model:模型相关配置(例如 AI 模型 API 密钥)--make:构建/清理/测试相关配置
命令结构
模式(必须指定其中一个):
--global:全局配置--model:模型配置--make:构建/测试配置
操作(必须指定其中一个):
--set 键 值...:设置键的值--unset 键:删除一个键--add 键 值...:向数组键添加值--del 键 值...:从数组键中删除值--list [键]:列出配置节中的所有值,或列出指定键的值
基本示例
完整配置示例
以下是包含所有推荐默认值的完整配置设置:
# 设置全局配置
# 设置完整的构建配置(默认特性)
单独操作
# 全局配置
# 模型配置
# 构建配置操作
# 删除一个键
# 数组操作
# 数组操作 - 自动类型转换和去重
# --add 操作的智能行为:
# 1. 如果键是字符串,自动转换为数组
# 2. 添加前自动检查重复,避免相同值多次出现
特性(Features)
特性允许您为不同的构建场景(例如 debug、release)维护多个配置。默认特性名为 default。
注意:--feature 选项只能与 --make 一起使用。
# 使用特定特性
# 列出特定特性的配置
特性名称不区分大小写,会自动转换为小写。
配置文件格式
配置存储在 .c2rust/config.toml 文件中:
[]
# 全局设置,一般无需配置
= ["gcc"]
[]
# AI 模型相关配置
= "your-api-key"
= "gpt-4"
[]
# 路径相对于项目根目录(包含 .c2rust 的目录)
= "build"
= "make clean"
= "build"
= "make test"
= "build"
= "make"
[]
= "debug_build"
= "make DEBUG=1"
= "debug_build"
= "make clean"
= "debug_build"
= "make test"
注意:
- 配置键(如
build.dir)在 TOML 文件中可以使用引号("build.dir")或不使用引号(build.dir),两种格式表示同一个键 - 工具会自动处理键的格式,确保键的唯一性,无论文件中使用哪种格式
- 保存配置时,工具会将带点的键自动加上引号以符合 TOML 规范
环境变量
C2RUST_PROJECT_ROOT
该工具支持通过 C2RUST_PROJECT_ROOT 环境变量指定项目根目录(包含 .c2rust 目录的目录)。
用途:
- 允许从任何目录运行工具,而无需先切换到项目目录
- 便于在脚本和自动化工作流中使用
- 支持在多个项目之间快速切换
使用方法:
# 设置环境变量指向项目根目录
# 现在可以从任何目录运行工具
# 或者在单个命令中设置
C2RUST_PROJECT_ROOT=/path/to/your/project
默认行为:
- 如果未设置
C2RUST_PROJECT_ROOT环境变量,工具将使用当前工作目录作为项目根目录 - 这保持了向后兼容性,现有的工作流程无需修改
示例:
# 情况 1:使用环境变量(从任何目录访问配置)
# 配置将保存到 /home/user/my-c2rust-project/.c2rust/config.toml
# 情况 2:不设置环境变量(使用当前目录)
# 配置将保存到当前目录下的 .c2rust/config.toml
使用要求
- 项目根目录(由
C2RUST_PROJECT_ROOT指定或当前工作目录)中必须存在.c2rust目录 - 工具不会遍历父目录查找
.c2rust目录 - 如果
.c2rust目录不存在,请手动创建:
# 在项目根目录中创建
# 或者使用环境变量指定的路径
# 确保已设置 C2RUST_PROJECT_ROOT 环境变量
config.toml文件会在首次运行工具时自动创建,包含默认的配置结构
错误处理
该工具提供清晰的分层错误消息:
- 缺少
.c2rust目录:如果在项目根目录(由C2RUST_PROJECT_ROOT指定或当前目录)中找不到.c2rust目录,则显示错误(中文提示) - 特性未找到:尝试访问不存在的特性时
- 键未找到:尝试删除或访问不存在的键时
- 无效操作:命令语法不正确时(例如缺少必需参数)
注意:config.toml 文件不存在时会自动创建,包含以下默认结构:
[]
[]
[]
验证和警告
该工具会验证特性配置并对不完整的配置发出警告:
完整的特性配置:使用 --make 配置特性时,应该一起设置以下所有键以形成完整配置:
clean.dir- 要清理的目录clean.cmd- 清理命令test.dir- 测试目录test.cmd- 测试命令build.dir- 构建输出目录build.cmd- 构建命令
如果存在这些键中的一部分但不是全部,将显示警告,列出缺少的键。
示例:
# 不完整的配置 - 将显示警告
# Warning: Feature 'feature.default' is missing required keys: clean.dir, clean.cmd, test.dir, test.cmd, build.cmd. All of [clean.dir, clean.cmd, test.dir, test.cmd, build.dir, build.cmd] should be configured together.
# 完整的配置 - 无警告
开发
运行测试
所有测试都是集成测试,位于 tests/integration_test.rs 中。
项目结构
c2rust-config/
├── src/
│ ├── main.rs # CLI 界面和命令解析
│ ├── config.rs # 配置文件操作
│ ├── operations.rs # 核心操作(set、unset、add、del、list)
│ └── error.rs # 错误处理
├── tests/
│ └── integration_test.rs # 集成测试
├── Cargo.toml
└── README.md
许可证
此项目是 c2rust 翻译工具包的一部分。