class GGem::CLI::CommandSet

Public Class Methods

new(&unknown_cmd_block) click to toggle source
# File lib/ggem/cli/commands.rb, line 361
def initialize(&unknown_cmd_block)
  @lookup    = Hash.new{ |_h, k| unknown_cmd_block.call(k) }
  @names     = []
  @aliases   = {}
  @summaries = {}
end

Public Instance Methods

[](name) click to toggle source
# File lib/ggem/cli/commands.rb, line 389
def [](name)
  @lookup[name]
end
add(klass, name, *aliases) click to toggle source
# File lib/ggem/cli/commands.rb, line 368
def add(klass, name, *aliases)
  begin
    cmd = klass.new
  rescue
    # don't add any commands you can't init
  else
    ([name] + aliases).each{ |n| @lookup[n] = cmd }
    @to_s = nil
    @names << name
    @aliases[name] = aliases.empty? ? "" : "(#{aliases.join(", ")})"
    @summaries[name] = cmd.summary.to_s.empty? ? "" : "# #{cmd.summary}"
  end
end
remove(name) click to toggle source
# File lib/ggem/cli/commands.rb, line 382
def remove(name)
  @lookup.delete(name)
  @names.delete(name)
  @aliases.delete(name)
  @to_s = nil
end
size() click to toggle source
# File lib/ggem/cli/commands.rb, line 393
def size
  @names.size
end
to_s() click to toggle source
# File lib/ggem/cli/commands.rb, line 397
def to_s
  max_name_size  = @names.map(&:size).max || 0
  max_alias_size = @aliases.values.map(&:size).max || 0

  @to_s ||= @names.map{ |n|
    "#{n.ljust(max_name_size)} #{@aliases[n].ljust(max_alias_size)} "\
    "#{@summaries[n]}"
  }.join("\n")
end