美文网首页
开发CLI工具(使用go语言)

开发CLI工具(使用go语言)

作者: 东南枝下 | 来源:发表于2022-02-02 16:22 被阅读0次

go可以交叉编译成linux、win、mac系统的二进制文件,很适合用于开发cli工具。
以下演示开发一个简单的cli工具,使用cobra组件来实现,编写一个简单的Say Hello Demo

初始化项目

使用go modules来管理包。所以需要先开启,并且切换国内代理,不然依赖可能拉不下来

go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.io,direct

初始化工程

go mod init gitee.com/jenson343/jtoolkit

拉取cobra

go get -u github.com/spf13/cobra@v1.0.0

编写子命令

cobra 可以编写子命令,子命令便于区分不同的功能,方便用于开发工具集CLI
在项目根目录下创建cmd目录,并编写子命令代码hello.go

mkdir cmd
touch hello.go
package cmd

import (
    "fmt"
    "github.com/spf13/cobra"
    "strings"
)

var helloCmdDesc = strings.Join([]string{
    "该子命令用于测试cobra命令行组件,参数如下:",
    "-n:名称,输出 hello xxx",
}, "\n")

// 接收输入参数
var hcName string

var helloCmd = &cobra.Command{
    Use:   "hello",
    Short: "say hello",
    Long:  helloCmdDesc,
    Run: func(cmd *cobra.Command, args []string) {
        fmt.Println("hello " + hcName)
    },
}

func init() {
    helloCmd.Flags().StringVarP(&hcName, "name", "n", "warrior", "输入名称")
}

添加子命令

在init函数中将子命令加入根命令中

touch root.go
package cmd

import "github.com/spf13/cobra"

var rootCmd = &cobra.Command{}

func Execute() error {
    return rootCmd.Execute()
}

func init() {
    rootCmd.AddCommand(helloCmd)
}

在main函数中调用命令

touch main.go
package main

import (
    "gitee.com/jenson343/jtoolkit/cmd"
    "log"
)

func main() {
    err := cmd.Execute()
    if err != nil {
        log.Fatalf("cmd.Execute err: %v", err)
    }
}

测试

localhost:jtoolkit Jenson$ go run main.go hello -n jenson
hello jenson
localhost:jtoolkit Jenson$ go run main.go hello --name jenson
hello jenson
localhost:jtoolkit Jenson$ 

gitee: gitee.com/jenson343/jtoolkit

相关文章

  • 开发CLI工具(使用go语言)

    go可以交叉编译成linux、win、mac系统的二进制文件,很适合用于开发cli工具。以下演示开发一个简单的cl...

  • hole 穿透防火墙工具

    hole 是一个用来穿透防火墙的工具,由我研发,早期使用Go语言开发,现在使用Haskell语言开发。 项目地址请...

  • Go标准库flag使用

    Go语言标准库flag基本使用 Go语言内置的flag包实现了命令行参数的解析,flag包使得开发命令行工具更为简...

  • GOLang CLI

    GOLang CLI 刚接触GoLang,发现大家在写CLI的时候都会直接使用Go语言中自动的flag或者cobr...

  • goweb,基于go的API框架

    goweb 一个基于go语言开发API的工具,这个工具受到了SpringMVC的启发,结合了go语言本身的特性,整...

  • Go语言实战笔记

    Go语言实战笔记(二)| Go开发工具https://www.flysnow.org/2017/03/08/go-...

  • go 语言进阶学习笔记(一)

    我先想分析一下现在有哪些公司使用go 语言,go语言在实际开发中有哪些使用场景,为什么要从其他语言转换成go语言。...

  • go 语言入门

    我先想分析一下现在有哪些公司使用go 语言,go语言在实际开发中有哪些使用场景,为什么要从其他语言转换成go语言。...

  • Go语言操作Redis

    Go语言操作Redis 在项目开发中redis的使用也比较频繁,本文介绍了Go语言中go-redis库的基本使用。...

  • 为Go语言web项目做集成测试

    之前的工作中使用 rails 及其生态中的工具写web项目,而如今使用Go语言开发,最怀念的当数 ActiveRe...

网友评论

      本文标题:开发CLI工具(使用go语言)

      本文链接:https://www.haomeiwen.com/subject/eklrkrtx.html