本文使用眼镜蛇库来实现命令行工具,例如git,docker和kubectl。本文只是模型的一个示例,但具有实际的参考意义。
在编程中,多次,该程序将处理多个参数,尤其是某些工具的功能,这些功能需要集成更多功能。即使具有相同的功能,也会有不同的参数。宇宙性也是可扩展性。
Cobra具有很强的功能,并且在Golang生态系统中具有许多应用程序,例如著名的Docker。支持子命令执行,配置文件读取和写入等。本文适用于实际战斗,但介绍了更多。
工程名称是CMDTool,它是已知的。项目目录和相应的简介如下:
其中,CMD是所有子命令的入口目录。不同的子命令以不同的子主导形式存在。公共目录中有共同的变量或初始化函数,依此类推。rootcmd.go creation命令函数被调用以输入COBRA处理框架。一般而言,您只需要在CMD目录中扩展sub -command,然后添加rootcmd.go函数,另一个是商业程序的处理。注意:原始设计想法是在Sub -Command软件包的Init函数中自动注册在rootcmd中,但发现它可能不逻辑。
主入口函数非常简单,并且实际上调用了rootcmd.go中的执行函数。
rootcmd.go源代码:
initconfig函数是读取配置文件字段。如果没有文件,它将自动生成默认配置。注意此功能的Yamlexample需要维护实际配置文件的格式(来自Viper.getString函数参数,您可以看到DBSERVER是顶层字段)最终,使用了配置文件的更改。实际测试发现它将触发两次,并且可以通过循环来解决时机判断变量值。
子命令的实现形式相似。以测试为例,源代码如下:
在newcmdtest函数中创建Cobra.Command,然后返回判断符文中的参数并真正执行业务函数。此示例实现参数监视功能,源代码:
当配置文件的相应字段更改时,请将其打印出来。
默认输出帮助信息:
行政从属命令:
监视配置文件:
源代码在这里。
在编写配置文件时,发现将删除Yamlexemple添加的注释,因此您可以直接考虑通过文件编写字符串。
Viper访问YAML参数接口: