在日常开发中,大家一定对命令行工具(CLI)非常熟悉。如果你说你不会命令工具,那你可能就是个假开发者。每天都会用到大量的命令行工具,比如最常用的Git、Go、Docker等,无论是技术开发还是业务开发,都会有开发命令行程序的场景。比如,如果是开发框架,会开发一个命令行工具,帮助用户快速生成项目结构;如果是定时任务程序,会开发一个命令行工具来启动任务。本文介绍两个专门用于开发命令行应用程序的库。urfave/cliurfave/cli是一个简单、快速且有趣的包,专用于构建命令行应用程序。它的目标是使开发人员能够以一种富有表现力的方式编写快速且可分发的命令行应用程序。看一个简单的例子:packagemainimport("fmt""log""os""github.com/urfave/cli/v2")funcmain(){app:=&cli.App{Name:"blog",Usage:"显示Ludoxin博客的欢迎信息",Action:func(*cli.Context)error{fmt.Println("欢迎来到Ludoxin的博客,能帮助到大家是我最大的快乐!")returnnil},}iferr:=app.Run(os.Args);err!=nil{log.Fatal(err)}}编译后执行查看帮助命令查看效果。$./main-hNAME:blog-显示Ludosin的博客欢迎用法:blog[globaloptions]command[commandoptions][arguments...]COMMANDS:help,h显示命令列表或一个命令的帮助GLOBALOPTIONS:--help,-hshowhelp执行blog命令看效果$./mainblog欢迎来到Ludoxin的博客。能帮助到大家是我最大的快乐!更多使用方法请参考官方文档https://cli.urfave.org/。spf13/cobra库主要由Go语言负责人开发。许多知名项目的命令行工具都是使用这个库开发的,例如Kubernetes、Istio、Docker、Etcd、GitHubCLI等。看一个简单的例子:",Short:"显示Ludoxin的博客欢迎信息",Long:"显示Ludoxin的博客欢迎信息,并介绍博客的整体情况",Run:func(cmd*cobra.Command,args[]string){fmt.println("欢迎来到Ludoxin的博客,能帮助到大家是我最大的快乐!")},}iferr:=rootCmd.Execute();err!=nil{fmt.Fprintln(os.Stderr,err)os.Exit(1)}}编译后执行help命令看效果:$./main-h显示Ludoxin博客的欢迎信息并介绍博客的整体情况Usage:blog[flags]Flags:-h,--helphelpforblog执行如下blog命令看效果:$./mainblog欢迎来到卢多欣的博客。能帮助到大家是我最大的快乐!更多使用方法请参考官方文档https://github.com/spf13/cobra/blob/main/user_guide.md。
