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型に変換するとうまくいった。