mimikunの技術メモ

mimikunがプログラミング中調べてわかったことをまとめていくブログです

Go言語で簡単なコマンドラインツールを作った話

cobraを使って簡単なコマンドラインツールを作ってみました。

cobraはHugoでも使われているライブラリです。

なぜ作ったか

こういうシェルスクリプト書くより

$ open -a "Google Chrome" index.html
$ open -a "Firefox" index.html
$ open -a "Safari" index.html

こういう風に実行したほうが簡単だし良いんじゃないかな?って思ったから

$ go-anyopen chrome index.html

手順

いつものようにディレクトリ作成

$ mkdir -p $GOPATH/src/github.com/mimikun/go-anyopen
$ cd $GOPATH/src/github.com/mimikun/go-anyopen
$ git init

ハマったところ

外部コマンドを実行するos/execの使い方でハマった。

失敗1

最初はこうかな?と思っていた

execmd := exec.Command("open", "-a", "Google Chrome", htmlfile)

失敗2

これもダメだった。

execmd := exec.Command("sh", "-c", "open -a \"Google Chrome\"", htmlfile)

正しい書き方

execmd := exec.Command("open", "-a", "Google Chrome", string(htmlfile))

string(htmlfile)でstring型に変換するとうまくいった。