class A < Thor include Thor::Actions desc "one", "invoke one" def one p 1 invoke :two invoke :three end desc "two", "invoke two" def two p 2 invoke :three end desc "three", "invoke three" def three p 3 end desc "four", "invoke four" def four p 4 invoke "defined:five" end desc "five N", "check if number is equal 5" def five(number) number == 5 end desc "invoker", "invoke a b command" def invoker(*args) invoke :b, :one, ["Jose"] end end class B < Thor class_option :last_name, :type => :string desc "one FIRST_NAME", "invoke one" def one(first_name) "#{options.last_name}, #{first_name}" end desc "two", "invoke two" def two options end desc "three", "invoke three" def three self end desc "four", "invoke four" option :defaulted_value, :type => :string, :default => 'default' def four options.defaulted_value end end class C < Thor::Group include Thor::Actions def one p 1 end def two p 2 end def three p 3 end end class Defined < Thor::Group class_option :unused, :type => :boolean, :desc => "This option has no use" def one p 1 invoke "a:two" invoke "a:three" invoke "a:four" invoke "defined:five" end def five p 5 end def print_status say_status :finished, :counting end end class E < Thor::Group invoke Defined end class F < Thor::Group invoke "b:one" do |instance, klass, command| instance.invoke klass, command, [ "Jose" ], :last_name => "Valim" end end class G < Thor::Group class_option :invoked, :type => :string, :default => "defined" invoke_from_option :invoked end class H < Thor::Group class_option :defined, :type => :boolean, :default => true invoke_from_option :defined end class I < Thor desc "two", "Two" def two current_command_chain end end class J < Thor desc "i", "I" subcommand :one, I end