Thorに任意のコンストラクタを設定する
Thorはコマンドラインツールを作成するrubyのライブラリで、基本的な使い方は 以下のURLに書いてある。
Ruby - Thorの使い方まとめ - Qiita Thor - Home
複数のコマンドを使うときは、コンストラクタで変数をまとめておいて、 各コマンドに渡す形の方が、見やすい場合がある。
今回Thorを使って、任意のコンストラクタを設定して、引数をインスタンス 変数に格納して実行する方法をメモした。
手順
通常通り、任意のクラスにThorを継承させる。
initialize メソッドに可変長引数を引数として定義する。
initialize内でsuperでinitializeをオーバライドさせた後に、 任意の処理を書く。
これでThorを通常通り使うことができる。
サンプルコードとか
サンプルコードは
$ ./mycli.rb ls --string=/tmp/
とか
./mycli.rb ls --string=/tmp/ --option=la
で実行するとlsの結果が出る簡単な処理を書いてみた。
#!/usr/local/bin/ruby # my.cli.rb require 'thor' class MyCLI < Thor class_options [:string, :option] def initialize(*args) super @string=options[:string] unless options[:option].nil? @option="-" + options[:option] end puts "Called initialize method" end desc 'ls <options> <string>', 'Only ls' def ls system("ls #{@option} #{@string}") end end MyCLI.start(ARGV)