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

lastsweetop · · 3807 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

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

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

基命令

首先创建一个基命令

package cmd

import (
    "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 main

import (
    "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$ gonne
gonne is my ai friend

子命令

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

package cmd

import "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 version
gonne version is 0.0.1

其他

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


有疑问加站长微信联系(非本文作者)

本文来自:CSDN博客

感谢作者:lastsweetop

查看原文:golang进阶(二)——cobra更实用的命令行

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

3807 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传