けーたうぇぶ

ITエンジニアの技術ネタや日々の生活のことを書き連ねます。

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)のインストール

installing - spf13/cobra

今回GoをインストールしたのはCLIを作るためだったので、GoでCLIならお馴染みだそうなcobraというパッケージとcobraCLIパッケージ(cobra-cli)をインストールします
基本は公式ドキュメントに記載の通りインストールでよさそうです。

# cobraライブラリのインストール
$ go get -u github.com/spf13/cobra@latest

# cobra-cliのインストール
$ go install github.com/spf13/cobra-cli@latest

cobra$GOPATH/pkg 内にインストールされ、CLIcobra-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 コマンドを使うようです

こちらの記事にわかりやすく説明がありました

Go1.16からは go get は使わず go install を使おう - Qiita