module EverydayThorUtil::Builder
Public Instance Methods
build!()
click to toggle source
# File lib/everyday_thor_util/builder.rb, line 194 def build! rc = Class.new(Thor) build_recurse(self.root_command, rc) rc end
command(options = {}, &block)
click to toggle source
# File lib/everyday_thor_util/builder.rb, line 190 def command(options = {}, &block) EverydayThorUtil::BuilderBuildItems::BuilderCommand.new(nil, options, &block) end
create_cmd_class_and_aliases(c, pc, cn, aliases, desc, long_desc, short_desc)
click to toggle source
# File lib/everyday_thor_util/builder.rb, line 237 def create_cmd_class_and_aliases(c, pc, cn, aliases, desc, long_desc, short_desc) create_command_class(c, pc, cn, desc, long_desc, short_desc) aliases.each { |an| create_command_class(c, pc, an, desc, long_desc, short_desc.gsub(/^\S+(?=\s|$)/, an.gsub(/_/, '-'))) } if aliases && !aliases.empty? true end
create_cmd_method_and_aliases(c, pc, cn, aliases, desc, long_desc, short_desc)
click to toggle source
# File lib/everyday_thor_util/builder.rb, line 243 def create_cmd_method_and_aliases(c, pc, cn, aliases, desc, long_desc, short_desc) setup_command(c, pc, desc, long_desc, short_desc) pc.create_method(cn.to_sym, &c.body) aliases.each { |an| setup_command(c, pc, desc, long_desc, short_desc.gsub(/^\S+(?=\s|$)/, an.gsub(/_/, '-'))) pc.dup_method an.to_sym, cn.to_sym } if aliases true end
flag(opts = {})
click to toggle source
# File lib/everyday_thor_util/builder.rb, line 186 def flag(opts = {}) opts end
global()
click to toggle source
# File lib/everyday_thor_util/builder.rb, line 178 def global @global ||= EverydayThorUtil::BuilderBuildItems::BuilderGlobal.new end
root_command()
click to toggle source
# File lib/everyday_thor_util/builder.rb, line 182 def root_command @root_command ||= EverydayThorUtil::BuilderBuildItems::BuilderCommand.new end
Private Instance Methods
build_flags(p, pc, has_children)
click to toggle source
# File lib/everyday_thor_util/builder.rb, line 205 def build_flags(p, pc, has_children) p.flags.flags.each { |fn, f| has_children ? pc.class_option(fn.to_sym, f) : pc.option(fn.to_sym, f) } end
build_helpers(p, pc)
click to toggle source
# File lib/everyday_thor_util/builder.rb, line 200 def build_helpers(p, pc) self.global.helpers.helpers.each { |hn, h| pc.no_commands { pc.create_method(hn.to_sym, &h) } } p.helpers.helpers.each { |hn, h| pc.no_commands { pc.create_method(hn.to_sym, &h) } } end
build_recurse(p, pc)
click to toggle source
# File lib/everyday_thor_util/builder.rb, line 209 def build_recurse(p, pc) setup_root(p, pc) if p.parent.nil? p.commands.commands.each { |cn, c| aliases, desc, long_desc, short_desc = extract_command_info(c) handle_command_class(c, pc, cn, aliases, desc, long_desc, short_desc) || handle_command_method(c, pc, cn, aliases, desc, long_desc, short_desc) } end
create_command_class(c, pc, cn, desc, long_desc, short_desc)
click to toggle source
# File lib/everyday_thor_util/builder.rb, line 253 def create_command_class(c, pc, cn, desc, long_desc, short_desc) cc = Class.new(Thor) cc.namespace cn.to_s build_helpers(c, cc) build_flags(c, cc, true) build_recurse(c, cc) setup_command(c, pc, desc, long_desc, short_desc) pc.subcommand cn, cc end
extract_command_info(c)
click to toggle source
# File lib/everyday_thor_util/builder.rb, line 263 def extract_command_info(c) short_desc = c.options[:short_desc] desc = c.options[:desc] long_desc = c.options[:long_desc] aliases = c.aliases return aliases, desc, long_desc, short_desc end
handle_command_class(c, pc, cn, aliases, desc, long_desc, short_desc)
click to toggle source
# File lib/everyday_thor_util/builder.rb, line 229 def handle_command_class(c, pc, cn, aliases, desc, long_desc, short_desc) !c.leaf? && create_cmd_class_and_aliases(c, pc, cn, aliases, desc, long_desc, short_desc) end
handle_command_method(c, pc, cn, aliases, desc, long_desc, short_desc)
click to toggle source
# File lib/everyday_thor_util/builder.rb, line 233 def handle_command_method(c, pc, cn, aliases, desc, long_desc, short_desc) c.body && create_cmd_method_and_aliases(c, pc, cn, aliases, desc, long_desc, short_desc) end
setup_command(c, pc, desc, long_desc, short_desc)
click to toggle source
# File lib/everyday_thor_util/builder.rb, line 223 def setup_command(c, pc, desc, long_desc, short_desc) build_flags(c, pc, false) pc.desc short_desc, desc if short_desc && desc pc.long_desc long_desc if long_desc end
setup_root(p, pc)
click to toggle source
# File lib/everyday_thor_util/builder.rb, line 218 def setup_root(p, pc) build_flags(p, pc, true) build_helpers(p, pc) end