用途
Sorcha CLI 技能用于构建和维护 Sorcha 命令行工具(sorcha)。该工具是用于管理 Sorcha 分布式账本平台的 .NET 10 全局工具。技能面向创建 CLI 命令、添加 API 客户端等开发任务。
主要能力与技术要点
工具使用 System.CommandLine 2.0.2 进行命令解析,使用 Refit 作为 HTTP API 客户端,使用 Spectre.Console 输出富文本终端内容。
项目位于 src/Apps/Sorcha.Cli/,包含以下目录:
- Commands/:命令实现
- Infrastructure/:辅助工具(ConsoleHelper、ExitCodes、HttpClientFactory)
- Models/:API 的请求/响应 DTO
- Services/:Refit 接口与服务契约
- Program.cs:入口点与命令注册
技能提供新增命令的代码模板,包括继承 Command、通过 Option 构造函数以 (name, description) 形式定义选项、添加选项到 Options 集合、使用 SetAction 设置异步处理程序并返回 ExitCodes 等功能。
技能说明 System.CommandLine 2.0.2 的关键用法:Option 构造函数写法、通过 option.Aliases.Add("-i") 单独添加短别名、Option 的 name 属性返回带短横线的名称(如 "--id")、使用 parseResult.GetValue(_option) 取值、通过 this.SetAction(async (pr, ct) => {...}) 设置动作。测试中查找选项应使用 o.Name == "--id",因为 Aliases 集合不包含选项名称。
技能还介绍父命令通过 Subcommands.Add 组织子命令,以及在 Program.cs 中通过 rootCommand.Subcommands.Add(...) 注册命令。
Refit 部分提供接口定义示例,涵盖 GET、POST、PUT、DELETE 动词,路径参数、查询参数、请求体、Authorization 头、分页参数以及 OData 查询($filter、$orderby、$top、$skip)。命令中通过 clientFactory 创建客户端、通过 authService 获取访问令牌并以 Bearer 形式传入。
错误处理模式基于 ApiException 的状态码分支:NotFound、Unauthorized、Forbidden 以及通用错误,分别返回对应退出码。退出码包括 Success(0)、GeneralError(1)、AuthenticationError(2)、AuthorizationError(3)、NotFound(4)、ValidationError(5)。
输出方面,ConsoleHelper 提供 WriteSuccess、WriteError、WriteWarning、WriteInfo 方法。技能展示 JSON 输出支持:当输出格式为 json 时用 JsonSerializer 序列化,否则以表格形式输出。
依赖版本
- System.CommandLine 2.0.2:CLI 框架
- Refit 9.0.2:HTTP 客户端
- Refit.HttpClientFactory 9.0.2:DI 集成
- Spectre.Console 0.54.0:富文本控制台输出
- System.IdentityModel.Tokens.Jwt 8.3.0:JWT 令牌处理
工具版本管理与使用方式
Sorcha CLI 可作为 .NET 全局工具安装,也可从本地构建运行。查询全局工具用 dotnet tool list --global | grep -i sorcha,定位命令用 which sorcha(Linux/macOS)或 where sorcha(Windows)。本地开发时可卸载全局工具以避免冲突:dotnet tool uninstall --global sorcha.cli。
本地构建后(dotnet build src/Apps/Sorcha.Cli)可执行文件位于 bin/Release/net10.0/Sorcha.Cli.exe 或 bin/Debug/net10.0/Sorcha.Cli.exe。编写 walkthrough 脚本时优先查找本地构建,找不到再回退到全局工具 sorcha。
出现意外命令选项或缺失功能时,可检查全局工具版本与源码是否不同、用 dotnet build src/Apps/Sorcha.Cli -c Release 重建,并用 sorcha --version 与 ./Sorcha.Cli.exe --version 对比验证。
文档资源
可通过 Context7 获取最新的 System.CommandLine 文档,库 ID 为 /dotnet/command-line-api。推荐查询包括 "Option constructor aliases System.CommandLine 2.0"、"SetAction handler pattern"、"ParseResult GetValue"。
相关技能与限制
相关技能包括 commands、testing、models、dotnet、xunit、fluent-assertions、moq。关于该工具的支持平台、收费与价格信息,资料暂未提供。