class Podage::Command
Attributes
base_command[RW]
description[RW]
name[RW]
usage[RW]
Public Class Methods
new(name, description, &block)
click to toggle source
# File lib/podage/cli/command.rb, line 39 def initialize(name, description, &block) @name = name @description = description @block = block @options = [] @commands = [] end
Public Instance Methods
add_command(command)
click to toggle source
# File lib/podage/cli/command.rb, line 56 def add_command(command) @commands << command end
add_option(option)
click to toggle source
# File lib/podage/cli/command.rb, line 50 def add_option(option) @options << option end
parse(args)
click to toggle source
# File lib/podage/cli/command.rb, line 62 def parse(args) args_tmp = args.dup if args_tmp.empty? @block.call self else args_tmp.each do |arg| @commands.each do |command| if arg == command.name args_tmp.delete(arg) command.parse(args_tmp) end end @options.each do |option| if arg == option.name || arg == option.short_cut args_tmp.delete(arg) option.execute end end end end unless args_tmp.empty? error = "Unknown arguments: " args_tmp.each do |arg| error += arg + " " end puts error print exit end end
print()
click to toggle source
# File lib/podage/cli/command.rb, line 122 def print puts puts "Usage".underline puts cmd = " $ ".bold + base_command unless @commands.empty? cmd += " " + "[command]".green.bold end unless @options.empty? cmd += " [options]".blue.bold end puts cmd unless @usage.nil? puts puts " " + @usage end if !@commands.empty? puts puts "Commands".underline puts @commands.each do |command| puts " ".green + command.name.green.bold + whitespace(command.name) + command.description end end if !@options.empty? puts puts "Options".underline puts @options.each do |option| output = option.name + ", " + option.short_cut puts " " + output.bold.blue + whitespace(output) + option.description end end puts end
Private Instance Methods
whitespace(message)
click to toggle source
# File lib/podage/cli/command.rb, line 185 def whitespace(message) count = @@indent - message.length i = 0 result = "" until count == i do result << " " i += 1 end return result end