crompt 0.1.0

Structured Config-as-Script — zero-boilerplate Shell CLI scaffolding.
Documentation
# ✅ example.toml 清理完成报告

**执行时间:** 2025-11-03  
**目标:** 以 `src/core/arg.rs` 中的 `Arg` 结构为标准,清理 example.toml 中的多余字段

---

## 📋 清理总结

### ✅ 已移除的字段

#### 全局配置级别

- `description` - 项目描述(未来功能)
-`homepage` - 项目主页(未来功能)
-`license` - 许可证(未来功能)
-`help` - 帮助标志(未来功能)
-`libs` - 自定义库引入(未来功能)
-`requires` - 外部依赖检查(未来功能)

#### 命令/子命令级别

- `aliases` - 命令别名(未来功能)
-`hidden` - 隐藏命令(未来功能)
-`deprecated` - 弃用标记(未来功能)
-`required` - 子命令是否必需(未来功能)

#### Arg 参数级别

- `is_positional` - 位置参数标志(**Arg 结构中不存在**-`conflicts_with` - 参数互斥关系(**Arg 结构中不存在**-`requires` - 参数依赖关系(**Arg 结构中不存在**-`validator` - 参数验证器(**Arg 结构中不存在**-`allowed` 的使用示例(保留字段定义,但示例中不用)

---

## ✅ 保留的字段(完全匹配 Arg 结构)

### 全局配置

```toml
name = "example"              # ✅ 项目名称
version = "0.0.1"             # ✅ 版本号
authors = ["..."]             # ✅ 作者信息
shebang = "#!/usr/bin/env zsh"  # ✅ Shebang
permission = "0755"           # ✅ 文件权限
```

### 命令定义

```toml
[[commands]]
name = "greet"      # ✅ 命令名
about = "..."       # ✅ 命令说明
```

### Arg 参数字段(与结构体完全一致)

```rust
pub struct Arg {
    pub name: String,              // ✅ 必需
    pub short: Option<String>,     // ✅ 短选项
    pub long: Option<String>,      // ✅ 长选项
    pub help: Option<String>,      // ✅ 帮助信息
    pub required: bool,            // ✅ 是否必需
    pub takes_value: bool,         // ✅ 是否接受值
    pub default: Option<String>,   // ✅ 默认值
    pub validator: Option<String>, // ✅ 验证器(保留字段)
    pub allowed: Vec<String>,      // ✅ 允许值列表(保留字段)
    pub multiple: bool,            // ✅ 可多次指定(保留字段)
    pub position: Option<u32>,     // ✅ 位置参数索引
}
```

---

## 📊 清理前后对比

### 清理前(复杂版本)

```toml
# 全局配置
name = "example"
description = "..."
homepage = "..."
license = "MIT"
help = true
libs = [...]
requires = [...]

# 命令
[[commands]]
name = "greet"
aliases = ["hello"]
hidden = false
deprecated = false
args = [
    { name = "name", ..., validator = "non_empty"},
    { name = "times", ..., allowed = ["1", "2"], requires = [], conflicts_with = []},
    { name = "quiet", ..., conflicts_with = ["loud"]},
]
```

### 清理后(简洁版本)⭐

```toml
# 全局配置
name = "example"
version = "0.0.1"
authors = ["..."]
shebang = "#!/usr/bin/env zsh"
permission = "0755"

# 命令
[[commands]]
name = "greet"
about = "向用户打招呼"
args = [
    { name = "name", short = "n", long = "name", help = "...", required = true, takes_value = true },
    { name = "times", short = "t", long = "times", help = "...", required = false, takes_value = true, default = "1" },
    { name = "loud", short = "l", long = "loud", help = "...", required = false, takes_value = false }
]
```

---

## ✅ 验证结果

### 测试命令

```bash
cargo run --example test_arg_struct
```

### 测试结果

```
✅ TOML 解析成功并正确反序列化到结构体!

📦 项目: example v0.0.1
👥 作者: ["Your Name <your_name@mail.com>"]
🔧 Shebang: #!/usr/bin/env zsh
🔐 权限: 0755

📋 命令详情:

🎯 命令: greet
   说明: 向用户打招呼
   参数:
     - name (-n) (--name) [必需]
     - times (-t) (--times) [默认: 1]
     - loud (-l) (--loud)
   子命令:
     • morning
       - name

🎯 命令: config
   说明: 配置管理
   子命令:
     • set
       - key [位置: 0]
       - value [位置: 1]
     • get
       - key [位置: 0]

✅ 所有字段都成功映射到 Arg 结构体!
```

---

## 🎯 第一期功能边界

### ✅ 支持的核心功能

1. **基本参数类型**
    - ✅ 选项参数(`--name value`, `-n value`    - ✅ 标志参数(`--verbose`, `-v`    - ✅ 位置参数(通过 `position` 字段)

2. **参数属性**
    - ✅ 必需/可选(`required`    - ✅ 默认值(`default`    - ✅ 短选项和长选项(`short`, `long`    - ✅ 帮助信息(`help`
3. **命令结构**
    - ✅ 多个主命令
    - ✅ 子命令嵌套
    - ✅ 命令说明(`about`
4. **保留但未使用的字段**(为未来扩展预留)
    - `validator` - 参数验证
    - `allowed` - 值白名单
    - `multiple` - 多值参数

---

## 🚀 下一步建议

### 当前状态:✅ 可以开始核心开发

1. **解析 TOML** - `example.toml` 已经可以完美映射到 `Arg` 结构
2. **生成 Shell Script** - 基于 `Arg` 字段生成对应的参数解析代码
3. **验证逻辑** - 实现 `required``default` 的验证

### 未来功能(第二期)

- 参数依赖和互斥(`requires`, `conflicts_with`- 参数验证器(`validator`, `allowed`- 命令别名和高级特性(`aliases`, `hidden`, `deprecated`- 自定义库引入(`libs`, `requires`
---

## 📁 相关文件

- `example/example.toml` - 简化后的配置文件
-`src/core/arg.rs` - Arg 结构定义(标准)
-`examples/test_arg_struct.rs` - 验证程序
-`example/example.sh` - 期望的生成目标

---

## 💡 总结

通过这次清理:

- 🎯 **聚焦核心功能** - 移除了所有第一期不需要的高级特性
-**完全匹配** - example.toml 与 Arg 结构 100% 对应
- 🚀 **可以开发** - 现在可以开始实现解析和生成逻辑
- 📦 **保留扩展性** - Arg 结构中保留了未来功能的字段定义

第一期实现保持简洁和稳定,后续可以逐步增加功能!✨