golang进阶(二)——cobra更实用的命令行

来源:互联网 发布:docker java web 编辑:程序博客网 时间:2024/05/16 15:18

+++
title=”golang进阶(二)——cobra更实用的命令行”
date=”2017-10-11”
tags=[“golang”,”glide”,”docker”]
categories=[“资源管理”]
description=”golang自身带的命令行包,各种case,有代码洁癖的人看着就令人头大”
+++

cobra是个非常不错的命令行包,docker,hugo都在使用

基命令

首先创建一个基命令

package cmdimport (    "github.com/spf13/cobra")var RootCmd = &cobra.Command{    Use: "gonne",    Run: func(cmd *cobra.Command, args []string) {        println("gonne is my ai friend")    },}

使用命令

在main方法中调用命令,恩,就这么简单

package mainimport (    "fmt"    "os"    "lastsweetop.com/cmd")func main() {    if err := cmd.RootCmd.Execute(); err != nil {        fmt.Println(err)        os.Exit(1)    }}

在命令行输入 gonne,就会执行基命令中Run方法

appletekiMacBook-Pro:src apple$ gonnegonne is my ai friend

子命令

在基命令上增加子命令也相当简单,根本无需在基命令和main方法中写任何代码,只需新建一个go文件,多个子命令间也是相互独立的,多么优雅的代码,告别各种case

package cmdimport "github.com/spf13/cobra"func init() {    RootCmd.AddCommand(versionCmd)}var versionCmd = &cobra.Command{    Use:   "version",    Short: "Print the version number of Gonne",    Run: func(cmd *cobra.Command, args []string) {        println("gonne version is 0.0.1")    },}

效果如下:

appletekiMacBook-Pro:src apple$ gonne versiongonne version is 0.0.1

其他

还有关于参数的问题,我们下一篇和怎么样做一个后台进程一起讲

原创粉丝点击