基本介绍
程序需要通过命令行来管理程序启动入口,因此命令行管理组件也是框架的核心组件之一。GoFrame 框架提供了强大的命令行管理模块,由 gcmd 组件实现。
使用方式:
import "github.com/gogf/gf/v2/os/gcmd"
接口文档:
https://pkg.go.dev/github.com/gogf/gf/v2/os/gcmd
组件特性
gcmd 组件具有以下显著特性:
- 使用简便、功能强大
- 命令行参数管理灵活
- 支持灵活的
Parser命令行自定义解析 - 支持多层级的命令行管理、更丰富的命令行信息
- 支持对象模式结构化输入/输出管理大批量命令行
- 支持参数结构化自动类型转换、自动校验
- 支持参数结构化从配置组件读取数据
- 支持自动生成命令行帮助信息
- 支持终端录入功能
与 Cobra 比较
Cobra 是 Golang 中使用比较广泛的命令行管理库,开源项目地址:https://github.com/spf13/cobra
GoFrame 框架的 gcmd 命令行组件与 Cobra 比较,基础功能比较相似,但差别比较大的在于参数管理方式以及可观测性支持方面:
gcmd组件支持结构化的参数管理,支持层级对象的命令行管理、方法自动生成命令,无需开发者手动定义手动解析参数变量。gcmd组件支持自动化的参数类型转换,支持基础类型以及复杂类型。gcmd组件支持可配置的常用参数校验能力,提高参数维护效率。gcmd组件支持没有终端传参时通过配置组件读取参数方式。gcmd组件支持链路跟踪,便于父子进程的链路信息传递。
相关文档
📄️ 命令管理-基本概念
详细讲解命令行管理中参数(`Argument`)和选项(`Option`)的基本概念及区别,阐述参数的顺序性、选项的无序性及命名规则。介绍`gcmd`组件对选项位置的灵活支持、等号连接符的使用以及默认解析规则,帮助开发者理解命令行输入的解析机制。
📄️ 命令管理-基础方法
全面介绍`GoFrame`框架`gcmd`组件的常用基础方法,包括`Init`自定义命令行数据、`GetArg`/`GetArgAll`参数获取、`GetOpt`/`GetOptAll`选项获取以及`GetOptWithEnv`环境变量自动读取支持。这些方法按照默认解析规则直接获取命令行参数及选项,简化命令行操作。
📄️ 命令管理-Parser解析
GoFrame框架的命令行解析功能,重点讲解了gcmd组件的Parser解析方法。通过自定义选项名称和数值解析,能够高效管理和解析命令行选项。包括代码示例和详细的接口文档,帮助开发者理解和应用于实际项目中。
📄️ 命令管理-命令行对象
详细介绍`GoFrame`框架`gcmd`组件的`Command`对象管理,包括对象定义、`Func`/`FuncWithValue`/`HelpFunc`三种回调方法、多层级命令管理、子命令添加及帮助信息自动生成功能,适用于需要管理单个或多个命令行入口的应用场景。
📄️ 命令管理-结构化参数
深入讲解`GoFrame`框架的结构化命令行参数管理,通过对象化管理命令和规范化的`Input`/`Output`参数对象,实现参数/选项的类型定义、说明描述、自动数据转换、自动数据校验和配置读取支持,解决传统命令行管理中参数索引硬编码、难以校验等痛点,适用于需要管理大量命令行的项目。
📄️ 命令管理-终端交互
详细介绍`GoFrame`框架`gcmd`组件的终端交互功能,提供`Scan`和`Scanf`两种方法从终端读取用户输入数据,适用于需要与用户进行交互的命令行程序场景,如配置信息收集、确认操作等,支持格式化输入和自动回车确认。
📄️ 命令管理-链路跟踪
详细介绍`GoFrame`框架命令管理组件的跨进程链路跟踪功能,基于`OpenTelemetry`规范实现主进程与子进程之间的链路信息自动传递,特别适用于临时运行的进程场景,通过`gctx.GetInitCtx()`获取初始化上下文实现链路信息的传递。