Golangの開発環境を作ってみる(Mac)
CLIを作ってみようと初めてのGolang、初めてのCobraを触り始めました。
A Tour of Go をある程度進めてみたものの、(飽きてきたので)とりあえず触ってみたいと思い、GoとCLI作成用パッケージ(Cobra)あたりを入れてみました。
とはいえGoの開発のルールやフォルダ構成、import等まだよくわかっていません。
今日はGoのインストールとパッケージのインストールまでの流れを残します。
環境
作業を行なった環境は下記の通りです
Mac OS 12.1 (M1 Pro)
$ brew -v Homebrew 3.4.11
Goのインストール
$ brew install go
goのインストールはbrewコマンドで終わります
同時に GOPATH
環境変数が追加されていると思うので、確認します
$ cd $ cat .zshrc # zshを使っている場合はこっち export GOPATH=$HOME/go $ cat .bash_profile # bashを使っている場合はこっち export GOPATH=$HOME/go
私はzshがメインですがbashも使って(しまって)いたので、一応両方にパスを通しています。
これでgoは利用できるようになります。
# goのバージョン確認 $ go version go version go1.18.2 darwin/arm64
パッケージ(cobra, cobra-cli)のインストール
今回GoをインストールしたのはCLIを作るためだったので、GoでCLIならお馴染みだそうなcobraというパッケージとcobraのCLIパッケージ(cobra-cli)をインストールします
基本は公式ドキュメントに記載の通りインストールでよさそうです。
# cobraライブラリのインストール $ go get -u github.com/spf13/cobra@latest # cobra-cliのインストール $ go install github.com/spf13/cobra-cli@latest
cobra
は $GOPATH/pkg
内にインストールされ、CLIの cobra-cli
は $GOPATH/bin
にインストールされます
$ cobra-cli Cobra is a CLI library for Go that empowers applications. This application is a tool to generate the needed files to quickly create a Cobra application. Usage: cobra-cli [command] Available Commands: add Add a command to a Cobra Application completion Generate the autocompletion script for the specified shell help Help about any command init Initialize a Cobra Application Flags: -a, --author string author name for copyright attribution (default "YOUR NAME") --config string config file (default is $HOME/.cobra.yaml) -h, --help help for cobra-cli -l, --license string name of license for the project --viper use Viper for configuration Use "cobra-cli [command] --help" for more information about a command.
cobra-cli
でコマンドが認識されていればパッケージのインストールまでひとまず完了です
cobra-cli
が認識されない場合
私が実行したときは cobra-cli
が認識されていませんでしたが、PATHが通っていないことが原因でした
PATHに $HOME/go/bin
がなければ追加します
$ cat .zshrc export PATH=$HOME/.nodebrew/current/bin:$PATH:"/opt/homebrew/bin:$PATH":$HOME/go/bin
使い始めのため詳しいことまでは理解していませんが、バージョン1.16以降のgoから go install
コマンドが利用できるようになり、 CLIとして利用するライブラリのインストールは go install
を利用するようです。
CLIではないパッケージのインストールは go get
コマンドを使うようです
こちらの記事にわかりやすく説明がありました