You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

77 lines
3.3 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package demo
import (
"github.com/spf13/cobra"
"goskeleton/app/global/variable"
)
// Demo示例文件我们假设一个场景
// 通过一个命令指定 搜索引擎(百度、搜狗、谷歌)、搜索类型(文本、图片)、关键词 执行一系列的命令
var (
// 1.定义一个变量,接收搜索引擎(百度、搜狗、谷歌)
SearchEngines string
// 2.搜索的类型(图片、文字)
SearchType string
// 3.关键词
KeyWords string
)
var logger = variable.ZapLog.Sugar()
// 定义命令
var Demo1 = &cobra.Command{
Use: "sousuo",
Aliases: []string{"sou", "ss", "s"}, // 定义别名
Short: "这是一个Demo以搜索内容进行演示业务逻辑...",
Long: `调用方法:
1.进入项目根目录Ginkeleton
2.执行 go run cmd/cli/main.go sousuo -h //可以查看使用指南
3.执行 go run cmd/cli/main.go sousuo 百度 // 快速运行一个Demo
4.执行 go run cmd/cli/main.go sousuo 百度 -K 关键词 -E baidu -T img // 指定参数运行Demo
`,
//Args: cobra.ExactArgs(2), // 限制非flag参数也叫作位置参数的个数必须等于 2 ,否则会报错
// Run命令以及子命令的前置函数
PersistentPreRun: func(cmd *cobra.Command, args []string) {
//如果只想作为子命令的回调,可以通过相关参数做判断,仅在子命令执行
logger.Infof("Run函数子命令的前置方法位置参数%v flag参数%s, %s, %s \n", args[0], SearchEngines, SearchType, KeyWords)
},
// Run命令的前置函数
PreRun: func(cmd *cobra.Command, args []string) {
logger.Infof("Run函数的前置方法位置参数%v flag参数%s, %s, %s \n", args[0], SearchEngines, SearchType, KeyWords)
},
// Run 命令是 核心 命令,其余命令都是为该命令服务,可以删除,由您自由选择
Run: func(cmd *cobra.Command, args []string) {
//args 参数表示非flag也叫作位置参数该参数默认会作为一个数组存储。
//fmt.Println(args)
start(SearchEngines, SearchType, KeyWords)
},
// Run命令的后置函数
PostRun: func(cmd *cobra.Command, args []string) {
logger.Infof("Run函数的后置方法位置参数%v flag参数%s, %s, %s \n", args[0], SearchEngines, SearchType, KeyWords)
},
// Run命令以及子命令的后置函数
PersistentPostRun: func(cmd *cobra.Command, args []string) {
//如果只想作为子命令的回调,可以通过相关参数做判断,仅在子命令执行
logger.Infof("Run函数子命令的后置方法位置参数%v flag参数%s, %s, %s \n", args[0], SearchEngines, SearchType, KeyWords)
},
}
// 注册命令、初始化参数
func init() {
Demo1.AddCommand(subCmd)
Demo1.Flags().StringVarP(&SearchEngines, "Engines", "E", "baidu", "-E 或者 --Engines 选择搜索引擎例如baidu、sogou")
Demo1.Flags().StringVarP(&SearchType, "Type", "T", "img", "-T 或者 --Type 选择搜索的内容类型,例如:图片类")
Demo1.Flags().StringVarP(&KeyWords, "KeyWords", "K", "关键词", "-K 或者 --KeyWords 搜索的关键词")
//Demo1.Flags().BoolP(1,2,3,5) //接收bool类型参数
//Demo1.Flags().Int64P() //接收int型
}
//开始执行
func start(SearchEngines, SearchType, KeyWords string) {
logger.Infof("您输入的搜索引擎:%s 搜索类型:%s, 关键词:%s\n", SearchEngines, SearchType, KeyWords)
}