GoのCLIツールを作ろうと思った時に、いつも「あー、どのパッケージ使おう」ってなるので、あちこちのサイトをあさって便利そうなパッケージをまとめてみました。あくまでもCLIに関連するパッケージなので、Go全般に便利なパッケージではないのでご注意を。

まだまだ不足はあると思うので、随時追加、修正していきます。解説とかサンプルとかも追加していきたい。

コマンドラインオプションパーサー

cli.go

A small package for building command line apps in Go https://github.com/codegangsta/cli

Cobra

A Commander for modern Go CLI interactions https://github.com/spf13/cobra

gcli

The easy way to build Golang command-line application. https://github.com/tcnksm/gcli

Go CLI Library

A Go library for implementing command-line interfaces. https://github.com/mitchellh/cli

go-flags

go command line option parser https://github.com/jessevdk/go-flags

Kingpin

A Go (golang) command line and flag parser https://github.com/alecthomas/kingpin

mow.cli

A versatile library for building command line applications in Go https://github.com/jawher/mow.cli

goptions

A flexible parser for command line options https://github.com/voxelbrain/goptions

プログレスバー, 進捗表示

pb

Console progress bar for Golang https://github.com/cheggaaa/pb

ioprogress

Go (golang) package for progress bars around io.Reader/Writers. https://github.com/mitchellh/ioprogress

Spinner

Go (golang) package for providing a terminal spinner/progress indicator with options. https://github.com/briandowns/spinner

go-spin

Terminal spinner package for Golang https://github.com/tj/go-spin

MultiBar

Display multiple progress bars in Go (golang). https://github.com/sethgrid/multibar

文字や背景に色をつける

color

Colorize your terminal strings. https://github.com/aybabtme/color

Color

Color package for Go (golang) https://github.com/fatih/color

colorstring

Go (golang) library for colorizing strings for terminal output. https://github.com/mitchellh/colorstring

chalk

Intuitive package for prettifying terminal/console output. https://github.com/ttacon/chalk

go-colorable

Colorable writer for windows. https://github.com/mattn/go-colorable

ASCIIテーブル出力

go-clitable

Command line (ASCII) table for Golang https://github.com/crackcomm/go-clitable

ASCII Table Writer

ASCII table in golang https://github.com/olekukonko/tablewriter

入力系

Interact

A Golang utility belt for interacting with the user over a CLI https://github.com/deiwin/interact

Prompt

Cross platform prompting library https://github.com/Bowery/prompt

絵文字

Emoji

emoji terminal output for golang https://github.com/kyokomi/emoji

ターミナル判定

go-isatty

isatty for golang https://github.com/mattn/go-isatty

参考記事, ドキュメント

Go言語によるCLIツール開発とUNIX哲学について http://yuuki.hatenablog.com/entry/go-cli-unix

Go で CLI ツールを作る https://speakerdeck.com/dtan4/go-de-cli-turuwozuo-ru

高速にGo言語のCLIツールをつくるcli-initというツールをつくった http://deeeet.com/writing/2014/06/22/cli-init/

Goでコマンドラインツールを簡単に作成する方法 http://qiita.com/cotrpepe/items/113c938b37919d021339

Go言語 + cli-init でコマンドラインツールを作る http://dev.classmethod.jp/tool/cli-tool-by-golang-and-cli-init/