python-livereloadのソース読んでたらdocoptというモジュールを使っていて、「optparseでもargparseでもないのか、なんだこれ?」と調べてみた。
optparse,argparseのようにオプションを登録してhelp,usageをつくるのではなく、helpの文字列からオプションをparseして組み立てるものだそうだ。
Command-line interface description language(CLI記述言語)と銘打っているので、python限定というわけではなく、Ruby,CoffeeScript,PHPなんかにも実装があるようだ。
cmd = """Python LiveReload Usage: livereload [-p <port>|--port=<port>] [-b|--browser] [<directory>] Options: -h --help show this screen -p <port> --port=<port> specify a server port, default is 35729 -b --browser open browser when start server """ def main(): args = docopt(cmd) port = args.get('--port') root = args.get('<directory>') autoraise = args.get('--browser')
使い方は簡単で、ヘルプの文字列書いたらdocoptに食わせるだけ。どの言語でも同じようにヘルプを書けるので嬉しいかも。積極的につかっていこうっと。
日本語の分かりやすい説明もあった。