この投稿は Sansan Advent Calendar 2015 の 5 日目の記事です。
概要
最近は mruby-cli でマルチプラットフォームの実行バイナリを作成できるようになり、ちょっとした CLI のコマンドを作成する機会が増えたのではないかと思います。
そこで、オリジナルの CLI を簡単に作れるようなライブラリを作ってみました。
お気付きの方もいるかもしれませんが、Ruby の thor のようなものです。
準備
まずは mruby-hogun を組み込んだ mruby を用意します。
以下のような build_config.rb を作成し、mruby を作ります。
MRuby::Build.new do |conf|
toolchain :gcc
enable_debug
conf.gem '../mruby-hogun'
conf.gembox 'default'
end
使い方
class FooCLI < Hogun
desc "hello NAME", "say hello to NAME"
def hello(name)
puts "Hello #{name}"
end
end
FooCLI.start
のような mycli.rb ファイルを用意し実行してみます。
実行例 1. 引数なしで実行する
$ mruby mycli.rb
Commands:
mycli.rb hello NAME # say hello to NAME
mycli.rb help [COMMAND] # Describe available commands or one specific command
実行例 2. コマンドを実行する
$ mruby mycli.rb hello Sansan
Hello Sansan
実行例 3. コマンドのヘルプを表示する
$ mruby mycli.rb help hello
Usage:
mycli.rb hello NAME
say hello to NAME
今後
最後の一枠に滑り込みで参加することになったので、ネタに困りライブラリを作ってみましたが、thor と比べるとまだまだ至らないことがあり、実用はまだかなと思うところもあります。
そんなわけでこれからは、mruby-cli に組み込めるようにしたり、bin にも組み込めるようにして、より mruby で自作のコマンドラインツールが作りやすいようにしていこうと思います。