class Bashly::Commands::Doc

Public Instance Methods

run() click to toggle source
# File lib/bashly/commands/doc.rb, line 17
def run
  if args['--index']
    puts data.keys
  else
    show
  end
end

Private Instance Methods

data() click to toggle source
# File lib/bashly/commands/doc.rb, line 62
def data
  return raw_data unless args['SEARCH']

  result = raw_data.select { |k, _v| k == args['SEARCH'] }
  return result if result.any?

  result = raw_data.select { |k, _v| k.include? args['SEARCH'] }
  return result if result.any?

  raise Error, 'No match'
end
docs_dir() click to toggle source
# File lib/bashly/commands/doc.rb, line 84
def docs_dir
  @docs_dir ||= File.expand_path '../docs', __dir__
end
raw_data() click to toggle source
# File lib/bashly/commands/doc.rb, line 74
def raw_data
  @raw_data ||= begin
    result = {}
    Dir["#{docs_dir}/*.yml"].each do |path|
      result.merge! YAML.load_file(path)
    end
    result
  end
end
show() click to toggle source
# File lib/bashly/commands/doc.rb, line 27
def show
  data.each do |key, info|
    show_key key
    show_help info['help']
    show_example info['example'] if info['example']
    show_url info['url'] if info['url']
  end
end
show_example(example) click to toggle source
# File lib/bashly/commands/doc.rb, line 46
def show_example(example)
  example = word_wrap "    #{example}"
  example.gsub!(/^(\s*- )?(\s*\w+):/, '\1b`\2`:')
  example.gsub!(/^(\s*- )/, 'y`\1`')
  example.gsub!(/^(\s*#.+)/, 'm`\1`')
  say example
  say ''
end
show_help(help) click to toggle source
# File lib/bashly/commands/doc.rb, line 55
def show_help(help)
  help = word_wrap "  #{help}"
  help.gsub!(/`([^`]+)`/, 'g`\1`')
  say help
  say ''
end
show_key(key) click to toggle source
# File lib/bashly/commands/doc.rb, line 36
def show_key(key)
  say "g`#{key}`"
  say ''
end
show_url(url) click to toggle source
# File lib/bashly/commands/doc.rb, line 41
def show_url(url)
  say "  See bu`#{url}`"
  say ''
end