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