module Clamp::Subcommand::Declaration
Subcommand
declaration methods.
Public Instance Methods
default_subcommand(*args, &block)
click to toggle source
# File lib/clamp/subcommand/declaration.rb, line 48 def default_subcommand(*args, &block) if args.empty? @default_subcommand ||= false else $stderr.puts "WARNING: Clamp default_subcommand syntax has changed; check the README." $stderr.puts " (from #{caller(1..1).first})" self.default_subcommand = args.first subcommand(*args, &block) end end
default_subcommand=(name)
click to toggle source
# File lib/clamp/subcommand/declaration.rb, line 43 def default_subcommand=(name) raise Clamp::DeclarationError, "default_subcommand must be defined before subcommands" if has_subcommands? @default_subcommand = name end
find_subcommand(name)
click to toggle source
# File lib/clamp/subcommand/declaration.rb, line 27 def find_subcommand(name) recognised_subcommands.find { |sc| sc.is_called?(name) } end
find_subcommand_class(*names)
click to toggle source
# File lib/clamp/subcommand/declaration.rb, line 31 def find_subcommand_class(*names) names.inject(self) do |command_class, name| return nil unless command_class subcommand = command_class.find_subcommand(name) subcommand.subcommand_class if subcommand end end
has_subcommands?()
click to toggle source
# File lib/clamp/subcommand/declaration.rb, line 23 def has_subcommands? !recognised_subcommands.empty? end
inheritable_attributes()
click to toggle source
# File lib/clamp/subcommand/declaration.rb, line 39 def inheritable_attributes recognised_options + inheritable_parameters end
recognised_subcommands()
click to toggle source
# File lib/clamp/subcommand/declaration.rb, line 13 def recognised_subcommands @recognised_subcommands ||= [] end
subcommand(name, description, subcommand_class = self, &block)
click to toggle source
# File lib/clamp/subcommand/declaration.rb, line 17 def subcommand(name, description, subcommand_class = self, &block) subcommand_class = Class.new(subcommand_class, &block) if block declare_subcommand_parameters unless has_subcommands? recognised_subcommands << Subcommand::Definition.new(name, description, subcommand_class) end
Private Instance Methods
declare_subcommand_parameters()
click to toggle source
# File lib/clamp/subcommand/declaration.rb, line 61 def declare_subcommand_parameters if default_subcommand parameter "[SUBCOMMAND]", "subcommand", attribute_name: :subcommand_name, default: default_subcommand, inheritable: false else parameter "SUBCOMMAND", "subcommand", attribute_name: :subcommand_name, required: false, inheritable: false end remove_method :default_subcommand_name if method_defined?(:default_subcommand_name) parameter "[ARG] ...", "subcommand arguments", attribute_name: :subcommand_arguments, inheritable: false end