class MisterBin::CommandMeta
for generating a text string ready to be used by Docopt.
This class is responsible for holding all the meta data for a command and
def commands_string
def commands_string return nil if commands.empty? key_value_block 'Commands:', commands end
def description
def description summary || help || '' end
def docopt
def docopt [ summary_string, help_string, usage_string, commands_string, options_string, params_string, env_string, examples_string ].compact.join "\n" end
def env_string
def env_string return nil if env_vars.empty? key_value_block 'Environment Variables:', env_vars end
def examples_string
def examples_string return nil if examples.empty? result = ['Examples:'] examples.each { |text| result << word_wrap(" #{text}") } result << '' result.join "\n" end
def help_string
def help_string help ? "#{word_wrap(help)}\n" : nil end
def initialize
def initialize @version = nil @help = nil @summary = nil @usages = [] @options = [] @params = [] @commands = [] @examples = [] @env_vars = [] end
def key_value_block(caption, pairs)
def key_value_block(caption, pairs) result = [caption] pairs.each do |key, value| result << " #{key}" result << word_wrap(" #{value}") result << '' end result.join "\n" end
def long_description
def long_description summary && help ? "#{summary}\n\n#{help}" : description end
def options_string
def options_string result = ['Options:'] options.each do |option| result << " #{option[0]}" result << word_wrap(" #{option[1]}") result << '' end result << ' -h --help' result << " Show this help\n" if version result << ' --version' result << " Show version number\n" end result.join "\n" end
def params_string
def params_string return nil if params.empty? key_value_block 'Parameters:', params end
def summary_string
def summary_string summary ? "#{word_wrap(summary)}\n" : nil end
def usage_string
def usage_string result = ['Usage:'] usages.each { |text| result << word_wrap(" #{text}") } result << '' result.join "\n" end