More Related Content
Similar to cli.go と cli-init で高速にコマンドラインツールを開発する / The command-line tool developed at high speed cli.go and cli-init
Similar to cli.go と cli-init で高速にコマンドラインツールを開発する / The command-line tool developed at high speed cli.go and cli-init (20)
cli.go と cli-init で高速にコマンドラインツールを開発する / The command-line tool developed at high speed cli.go and cli-init
- 1. CLI.GO と CLI-INIT で高速にコマ
ンドラインツールを開発す
る
THE COMMAND-LINE TOOL DEVELOPED AT HIGH SPEED CLI.GO
AND CLI-INIT
2014/12/12 @taketin
- 3. A SMALL PACKAGE FOR BUILDING COMMAND
LINE APPS IN GO
star - over 1900
GitHub code search hit - over 2800
CLIツール実装に必要なインタフェースを提供
コアロジックに集中できる
- 5. THE EASY WAY TO START BUILDING GOLANG
COMMAND-LINE APPLICATION
ref.
高速にGo言語のCLIツールをつくるcli-initというツール
をつくった
cli.go のテンプレートを生成
高速に開発開始!
- 7. #0 ENVIRONMENT
$ brew install go
$ vi .bashrc
export GOPATH=$HOME/go
export GOROOT=/usr/local/opt/go/libexec
export PATH=$PATH:$GOPATH/bin:$GOROOT/bin
- 8. #1 INSTALLATION
$ go get -d github.com/tcnksm/cli-init
$ cd $GOPATH/src/github.com/tcnksm/cli-init
$ make install
- 12. #5 FLAGS
コマンドにフラグオプションを追加する場合
ex) todo delete -a
commands.go にフラグの記述を追記
var deleteFlags = []cli.Flag{
cli.BoolFlag{Name: "all, a", Usage: "all delete"},
}
var commandDelete = cli.Command{
Name: "delete",
Usage: "",
Description: `
`,
Action: doDelete,
Flags: deleteFlags, // add
}
func doDelete(c *cli.Context) {
isDeleteAll := c.Bool("all")
if isDeleteAll {
// snip..
}
}
- 14. #7 ENJOY
Golang 学習コストそれほど高くない(気がする)
書き易いし読み易い(気がする)
package の仕組み
便利ツール作るのに最適ぽい
標準ライブラリ充実
クロスコンパイル環境
速度が早い
goroutine