rucmd-0.1.2 is not a library.
rucmd 目录解析
rucmd 是项目的命令行工具层,提供统一的 CLI 入口,支持加密解密、配置查看、DI 代码生成、日志管理等命令行操作,并通过 DI 容器注册为全局单例。
文件结构
rucmd/
├── mod.rs # 模块导出
├── rucmd.rs # 核心命令执行器 RuCmd
├── rucmd_init.rs # RuCmd 的 DI 注册(自动生成)
├── rucmd_test.rs # 命令测试
└── ruframe/ # 命令框架子模块
├── mod.rs
├── commandline.rs # 单条命令数据结构
├── commandlines.rs # 命令集合管理器
└── commandlines_init.rs # CommandLines 的 DI 注册(自动生成)
核心设计:RuCmd 命令执行器
rucmd.rs 是整个 CLI 的核心:
// 无字段,纯方法驱动
实现了 BaseEntitySingle(单例模式),全局只有一个实例。
支持的命令一览
通过 execute(args) 方法统一路由,根据 args[1] 匹配:
| 命令 | 子命令 | 功能 | 调用的方法 |
|---|---|---|---|
enc <text> |
— | 加密文本(AES-256-GCM) | enc() → ruenc::enc() |
dec <text> |
— | 解密文本 | dec() → ruenc::dec() |
conf |
— | 查看完整配置(JSON) | list_config() |
cfg env |
— | 查看 software 配置 | list_config() |
cfg db |
— | 查看 datasource 配置 | list_config() |
cfg redis |
— | 查看 Redis 配置 | list_config() |
cfg web |
— | 查看 Web 配置 | list_config() |
rudi list |
— | 列出所有结构体 | rudi() → difactroy::list_di() |
rudi all |
— | 为所有结构体生成 DI 注入代码 | rudi() → difactroy::make_di() |
rudi <name> |
— | 为指定结构体生成 DI 代码 | rudi() → difactroy::make_di_one() |
version / v |
— | 显示版本号 | version() |
help / h |
— | 显示帮助信息 | help() |
inst / i |
cmd/data/config/web/all |
安装依赖(预留) | inst() |
list |
<dir> |
列出指定目录日志文件 | list_log() |
命令路由机制
设计简洁:args[0] 是程序名,args[1] 是主命令,args[2..] 是子命令/参数。
关键功能详解
1. 加密解密(enc / dec)
直接委托给 ruenc 模块的 AES-256-GCM 加解密,用于敏感配置字段的加密存储。
2. 配置查看(conf)
支持按模块查看配置:
conf→ 全部配置 JSONcfg env→software配置cfg db→datasource配置cfg redis→redis配置cfg web→web配置
3. DI 代码生成(rudi)
这是最核心的自动化能力:
rudi list→ 列出所有可自动注入的结构体rudi all→ 批量为所有结构体生成*_init.rsDI 注册代码rudi <name>→ 为指定结构体生成
依赖于 difactroy(DI 工厂)模块。
4. 日志文件查看(list)
ruframe 子模块 — 命令框架(预留)
这是一个可扩展的命令注册框架,目前处于早期阶段:
| 文件 | 说明 |
|---|---|
| commandline.rs | 单条命令的数据结构:cmd(命令名)、args(参数)、cmdHelp(帮助文本) |
| commandlines.rs | 命令集合管理器:Vec<CommandLine> 用 Mutex 包裹,提供 reg() 注册方法 |
| commandlines_init.rs | DI 注册(多例模式) |
设计意图是让命令可动态注册,但 CommandLine 中的 cmdFn 字段被注释掉了,reg() 方法也只是 push 了一个默认值,说明这个可扩展框架还在开发中。
DI 注册
// RuCmd: 单例模式
register_singleton;
// CommandLines: 多例模式
register;
获取方式:rucmd::find_bean_rucmd().unwrap()
架构定位
┌──────────────────────────────────────────────────┐
│ rucmd (CLI 层) │
│ │
│ ┌──────────┐ ┌──────────────────────────┐ │
│ │ RuCmd │────→│ execute(args) 命令路由 │ │
│ │ (单例) │ │ │ │
│ └──────────┘ │ enc/dec → ruenc │ │
│ │ cfg → ruconf │ │
│ │ rudi → difactroy │ │
│ │ list → fileutils │ │
│ └──────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────┐ │
│ │ ruframe (命令框架 - 预留) │ │
│ │ CommandLine / CommandLines │ │
│ │ → 可扩展的动态命令注册 │ │
│ └──────────────────────────────────────────┘ │
└──────────────┬───────────────────────────────────┘
│ 依赖
┌──────────┼──────────┬───────────┐
▼ ▼ ▼ ▼
┌──────┐ ┌──────┐ ┌──────────┐ ┌──────────┐
│ruenc │ │ruconf │ │difactroy │ │ fileutils│
│加密解密│ │配置 │ │DI工厂 │ │ 文件工具 │
└──────┘ └──────┘ └──────────┘ └──────────┘
使用示例
# 加密密码
# 解密
# 查看当前配置
# 生成 DI 代码
# 查看日志
# 帮助
总结:rucmd 是项目的 CLI 工具集,将加密解密、配置查看、DI 代码生成、日志管理等运维操作统一封装为命令行,通过 execute() 方法实现简单路由,各功能委托给对应底层模块执行。ruframe 子模块预留了可扩展的命令注册框架,为未来动态添加命令提供了基础。