トールを使用して CLI アプリを作成しています。うまくいっていますが、今はサブコマンド機能で立ち往生しています。
その github wiki には何もありませんし、ググっても何も役に立ちません。
それで、誰かがサブコマンド機能を実装する方法を示したり指摘したりできますか?
チェックアウト: http://whatistor.com/
そのサイトから(スペースを節約し、サブコマンドの使用法を強調するために少し編集しました):
モジュール GitCLI class Remote ", "リポジトリの名前を付けたリモートを追加します" オプション :t, :banner => "" オプション :m, :banner => "" オプション :f => :boolean、:tags => :boolean、:mirror => :string def add(名前、URL) # git remote add を実装 終わり desc "rename ", "リモートの名前を次の名前に変更" def rename(古い、新しい) 終わり 終わり class Git [...]", "別のリポジトリからオブジェクトと参照をダウンロード" オプション :all => :boolean、:multiple => :boolean オプション :append, :type => :boolean, :aliases => :a def fetch(リポジトリ、*refspec) # ここに git fetch を実装 終わり desc "remote SUBCOMMAND ...ARGS", "追跡されたリポジトリのセットを管理する" subcommand "remote", Remote ### ここで使用されるサブコマンド... 終わり 終わり
h番目...
次のようなことを試してください (ファイル test.rb):
#!/usr/bin/env ruby
require 'rubygems'
require 'thor'
require 'thor/group' # This is required -- it's not a bug, it's a feature!
class Bar < Thor
desc "baz", "Whatever"
def baz
puts "Hello from Bar"
end
end
class Foo < Thor
desc "go", "Do something"
def go
puts "Hello there!"
end
register Bar, :bar, "bar", "Do something else"
end
if __FILE__ == $0
Foo.start
end
これは次のように動作します。
> test.rb
Tasks:
test.rb bar # Do something else
test.rb go # Do something
test.rb help [TASK] # Describe available tasks or one specific task
> test.rb go
Hello there!
> test.rb bar
Tasks:
test.rb baz # Whatever
test.rb help [COMMAND] # Describe subcommands or one specific subcommand
> test.rb bar baz
Hello from Bar
> test.rb baz
Could not find task "baz".
>
(これはほとんど期待どおりに機能しますが、「test.rb bar」のヘルプ情報が正しくないことを除けば、私見です。「test.rb baz . ..".)
お役に立てれば!