module Sickle::Help
Public Class Methods
included(base)
click to toggle source
# File lib/sickle.rb, line 108 def self.included(base) base.class_eval do desc "Display help" def help(command = nil) if command __display_help_for_command(command) else __display_help end end end end
Public Instance Methods
__display_command_usage(name, command)
click to toggle source
# File lib/sickle.rb, line 144 def __display_command_usage(name, command) params = command.meth.parameters.map do |(r, p)| r == :req ? p.upcase : "[#{p.upcase}]" end ["#{name.gsub("_", "-")} #{params.join(" ")}", command] end
__display_global_options()
click to toggle source
# File lib/sickle.rb, line 170 def __display_global_options unless self.class.__global_options.empty? puts puts "GLOBAL OPTIONS:" self.class.__global_options.sort.each do |name, opt| puts __display_option(opt) end end end
__display_help()
click to toggle source
# File lib/sickle.rb, line 152 def __display_help puts "USAGE:" puts " #{$0} COMMAND [ARG1, ARG2, ...] [OPTIONS]" puts puts "TASKS:" cmds = self.class.__commands.sort.map do |name, command| __display_command_usage(name, command) end max = cmds.map {|a| a[0].length }.max cmds.each do |(cmd, c)| desc = c.desc ? "# #{c.desc}" : "" puts " #{cmd.ljust(max)} #{desc}" end __display_global_options end
__display_help_for_command(name)
click to toggle source
# File lib/sickle.rb, line 122 def __display_help_for_command(name) if cmd = self.class.__commands[name] puts "USAGE:" u, _ = __display_command_usage(name, cmd) puts " #{$0} #{u}" puts puts "DESCRIPTION:" puts cmd.desc.split("\n").map {|e| " #{e}"}.join("\n") puts unless cmd.options.empty? puts "OPTIONS:" cmd.options.each do |_, opt| puts __display_option(opt) end end __display_global_options else puts "\e[31mCommand '#{name}' not found\e[0m" end end
__display_option(opt)
click to toggle source
# File lib/sickle.rb, line 180 def __display_option(opt) " --#{opt.cli_name} (default: #{opt.default})" end
help(command = nil)
click to toggle source
# File lib/sickle.rb, line 111 def help(command = nil) if command __display_help_for_command(command) else __display_help end end