class MisterBin::CommandMeta

This class is responsible for holding all the meta data for a command and for generating a text string ready to be used by Docopt.

Attributes

commands[R]
env_vars[R]
examples[R]
help[RW]
options[R]
params[R]
summary[RW]
usages[R]
version[RW]

Public Class Methods

new() click to toggle source
# File lib/mister_bin/command_meta.rb, line 13
def initialize
  @version  = nil
  @help     = nil
  @summary  = nil
  @usages   = []
  @options  = []
  @params   = []
  @commands = []
  @examples = []
  @env_vars = []
end

Public Instance Methods

description() click to toggle source
# File lib/mister_bin/command_meta.rb, line 30
def description
  summary || help || ''
end
docopt() click to toggle source
# File lib/mister_bin/command_meta.rb, line 25
def docopt
  [summary_string, help_string, usage_string, commands_string,
    options_string, params_string, env_string, examples_string].compact.join "\n"
end
long_description() click to toggle source
# File lib/mister_bin/command_meta.rb, line 34
def long_description
  summary && help ? "#{summary}\n\n#{help}" : description
end

Private Instance Methods

commands_string() click to toggle source
# File lib/mister_bin/command_meta.rb, line 84
def commands_string
  return nil if commands.empty?
  key_value_block 'Commands:', commands
end
env_string() click to toggle source
# File lib/mister_bin/command_meta.rb, line 79
def env_string
  return nil if env_vars.empty?
  key_value_block 'Environment Variables:', env_vars
end
examples_string() click to toggle source
# File lib/mister_bin/command_meta.rb, line 89
def examples_string
  return nil if examples.empty?

  result = ["Examples:"]
  examples.each { |text| result << word_wrap("  #{text}") }
  result << ""
  result.join "\n"
end
help_string() click to toggle source
# File lib/mister_bin/command_meta.rb, line 44
def help_string
  help ? word_wrap(help) + "\n" : nil
end
key_value_block(caption, pairs) click to toggle source
# File lib/mister_bin/command_meta.rb, line 98
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
options_string() click to toggle source
# File lib/mister_bin/command_meta.rb, line 55
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
params_string() click to toggle source
# File lib/mister_bin/command_meta.rb, line 74
def params_string
  return nil if params.empty?
  key_value_block 'Parameters:', params
end
summary_string() click to toggle source
# File lib/mister_bin/command_meta.rb, line 40
def summary_string
  summary ? word_wrap(summary) + "\n" : nil
end
usage_string() click to toggle source
# File lib/mister_bin/command_meta.rb, line 48
def usage_string
  result = ["Usage:"]
  usages.each { |text| result << word_wrap("  #{text}") }
  result << ""
  result.join "\n"
end