首页 体育 教育 财经 社会 娱乐 军事 国内 科技 互联网 房产 国际 女人 汽车 游戏

使用Go语言在MacOS创建一个自定义的命令行工具

2020-01-11

运用 MacOS 做开发的朋友都知道,咱们一般会运用 Homebrew 做软件包办理,常常会用到 brew install [soft] 来装置各式各样的指令行软件。今日经过一个百科查找的指令行东西示例,咱们来学习一下怎么运用 Go 言语开发自己的指令行软件。

创立指令行项目 敞开 Go Module

export GO111MODULE=on
装置 cobra 东西
go get -u github.com/spf13/cobra/cobra
创立指令行项目
# 创立项目目录
mkdir -p /data/idoubi/tellme && cd /data/idoubi/tellme
# 界说模块
go mod init github.com/idoubi/tellme
# 初始化指令行项目
cobra init --pkg-name github.com/idoubi/tellme
检测运转
go run main.go -h

履行完上述操作后,假如控制台输出了协助信息,证明咱们的指令行项目创立成功了。

新建子指令 新建子指令
cobra add baike
编写事务逻辑 在生成的子指令文件 /data/idoubi/tellme/cmd/baike.go 中编写子指令需求完成的事务逻辑。

export GO111MODULE=on
go get -u github.com/spf13/cobra/cobra
# 创立项目目录
mkdir -p /data/idoubi/tellme && cd /data/idoubi/tellme
# 界说模块
go mod init github.com/idoubi/tellme
# 初始化指令行项目
cobra init --pkg-name github.com/idoubi/tellme
go run main.go -h

履行完上述操作后,假如控制台输出了协助信息,证明咱们的指令行项目创立成功了。

cobra add baike
package cmd
import ,
 Run: func {
 err := findInBaike
 if err != nil {
 fmt.Println
 os.Exit
func init {
 rootCmd.AddCommand
 baikeCmd.Flags.StringVarP
// 百科查找
func findInBaike error {
 var link string
 // 百度百科查找
 if platform == baidu || platform == bd {
 link = fmt.Sprintf
 // 互动百科查找
 if platform == hudong || platform == baike || platform == hd {
 link = fmt.Sprintf
 // 维基百科查找
 if platform == wikipedia || platform == wiki || platform == wp {
 link = fmt.Sprintf
 if link == {
 return fmt.Errorf
 goos := runtime.GOOS
 opencmd := open 
 opencmd, ok := openCmds[goos]
 if !ok {
 return fmt.Errorf
 if err := exec.Command.Start; err != nil {
 return err
 return nil
}

# 在百度百科检查信息
go run main.go baike 周杰伦
# 在维基百科检查信息
go run main.go bk -p wp 周杰伦
上述的 baike 是咱们创立的子指令, bk 是子指令别号, -p 是子指令标识,用于指定百科渠道。 周杰伦 是接纳的参数。

# 在百度百科检查信息
go run main.go baike 周杰伦
# 在维基百科检查信息
go run main.go bk -p wp 周杰伦

# 编译
go build -o tellme
./tellme -h
穿插编译

除了在 MacOS 中运用外,咱们还期望能在 linux 和 windows 体系中运用咱们的指令行东西。这种情况下咱们需求用到穿插编译。

# 下载穿插编译东西
go get -u github.com/mitchellh/gox
# 编译成指定渠道的可履行文件
gox -osarch windows/amd64 linux/amd64 darwin/amd64 
大局履行

编译完成后,咱们能够创立一个软衔接,让指令行东西能够在任何途径下大局履行。

# 创立软衔接
ln -s /data/idoubi/tellme/tellme_darwin_amd64 /usr/local/bin/tm
# 大局履行
tm -h
上传到 Github

经过上述的几个过程,咱们现已完成了一个简略的指令行东西的编写与测验作业,接下来需求把软件发布出去让所有人运用。

# 推送代码到github
cd /data/idoubi/tellme
go init
git add .
git commit -m a cli tool used in macos 
git push origin master
# 发布一个版别
git tag -a v0.1.0 -m first version 
git push origin --tags
上传到 Github 完成后,咱们能够在项目的 release 页面看到这个项目的版别信息和源码下载文件 https://github.com/idoubi/tellme/releases/tag/v0.1.0 ,咱们能够修改发布信息,上传穿插编译后得到的各个渠道的二进制文件,便利不同渠道的用户在这里直接下载二进制文件来运用咱们的软件。

# 编译
go build -o tellme
./tellme -h

除了在 MacOS 中运用外,咱们还期望能在 linux 和 windows 体系中运用咱们的指令行东西。这种情况下咱们需求用到穿插编译。

# 下载穿插编译东西
go get -u github.com/mitchellh/gox
# 编译成指定渠道的可履行文件
gox -osarch windows/amd64 linux/amd64 darwin/amd64 

编译完成后,咱们能够创立一个软衔接,让指令行东西能够在任何途径下大局履行。

# 创立软衔接
ln -s /data/idoubi/tellme/tellme_darwin_amd64 /usr/local/bin/tm
# 大局履行
tm -h

经过上述的几个过程,咱们现已完成了一个简略的指令行东西的编写与测验作业,接下来需求把软件发布出去让所有人运用。

# 推送代码到github
cd /data/idoubi/tellme
go init
git add .
git commit -m a cli tool used in macos 
git push origin master
# 发布一个版别
git tag -a v0.1.0 -m first version 
git push origin --tags

创立 Homebrew 软件 咱们能够在 Github 上仿制软件源码包下载地址,在 MacOS 经过 brew create [source] 创立 Homebrew 软件包。

brew create https://github.com/idoubi/tellme/archive/v0.1.0.tar.gz

修改软件界说文件 由于咱们这个指令行软件是用 Go 言语编写的,在 Homebrew 软件界说文件中,咱们能够指定软件的装置依赖于 go:build ,而且界说好 install 方法。

class Tellme Formula
 desc a cli tool to get information. 
 homepage https://github.com/idoubi/tellme 
 url https://github.com/idoubi/tellme/archive/v0.1.0.tar.gz 
 sha256 b0c14c0e9f02e065917262a7c0d16e205097cc4d10c01e03ad93b4cd737cf81d 
 depends_on go = :build
 def install
 system go , build , -o , bin/ tellme 
 test do
 system false 
end

上面看到的是经过 Go 源码编译的方法界说 Homebrew 软件的装置方法,咱们还能够经过下载可履行二进制的方法界说 Homebrew 软件包的装置,比方经过穿插编译生成可履行文件。

根据可履行文件创立 Homebrew 软件包:

brew create https://github.com/idoubi/tellme/releases/download/v0.1.0/tellme_darwin_amd64.tar.gz

class Tellme Formula
 desc a cli tool to get information 
 homepage 
 url https://github.com/idoubi/tellme/releases/download/v0.1.0/tellme_darwin_amd64.tar.gz 
 sha256 164787b02050faef0d5776ca86d27d15b26fe28493f95ba2e705ba2e30026c94 
 def install
 bin.install tellme_darwin_amd64 = tellme 
 test do
 system false 
end
装置 Homebrew 软件 创立完 Homebrew 软件后,咱们经过 brew install tellme 就能够根据本地生成的 /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/tellme.rb 文件来装置咱们的指令行软件了。

class Tellme Formula
 desc a cli tool to get information 
 homepage 
 url https://github.com/idoubi/tellme/releases/download/v0.1.0/tellme_darwin_amd64.tar.gz 
 sha256 164787b02050faef0d5776ca86d27d15b26fe28493f95ba2e705ba2e30026c94 
 def install
 bin.install tellme_darwin_amd64 = tellme 
 test do
 system false 
end

发布 Homebrew 软件 经过上面的过程,咱们创立了一个在 MacOS 经过 Homebrew 装置的软件,接下来咱们需求把这个软件发布出去,让用户能够经过简略的 brew 指令直接装置运用。

# 创立软件库房
mkdir -p /data/idoubi/homebrew-tools && cd /data/idoubi/homebrew-tools
# 仿制软件界说文件到库房目录
cp /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/tellme.rb /data/idoubi/homebrew-tools/
# 推送到 Github 库房
git init
git remote add origin https://github.com/idoubi/homebrew-tools.git
git add .
git commit -m a homebrew soft named tellme 
git push origin master

任何人能够经过下面两行指令在自己的 MacOS 体系中运用咱们开发的指令行软件。

# 衔接软件库房
brew tap idoubi/tools
# 从软件库房装置软件
brew install tellme

前面的内容简略介绍了怎么运用 Go 言语来创立一个在 MacOS 运用的指令行软件,需求开发者了解 MacOS 中 Homebrew 软件包办理东西的运用以及 Go 言语。后边咱们能够打开更多的幻想,在咱们的指令行东西中添加查气候、搜歌词、翻译、时刻类型转化等各种特性功用。

指令行软件源码: tellme

任何人能够经过下面两行指令在自己的 MacOS 体系中运用咱们开发的指令行软件。

# 衔接软件库房
brew tap idoubi/tools
# 从软件库房装置软件
brew install tellme

前面的内容简略介绍了怎么运用 Go 言语来创立一个在 MacOS 运用的指令行软件,需求开发者了解 MacOS 中 Homebrew 软件包办理东西的运用以及 Go 言语。后边咱们能够打开更多的幻想,在咱们的指令行东西中添加查气候、搜歌词、翻译、时刻类型转化等各种特性功用。

热门文章

随机推荐

推荐文章