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