Sha256: 0c21d0be294208c7afbaf8349f0b107a1e3eed3d81cc924f4a9c073c3dc956a5
Contents?: true
Size: 2 KB
Versions: 16
Compression:
Stored size: 2 KB
Contents
require 'hammer_cli/abstract' module HammerCLI class FullHelpCommand < HammerCLI::AbstractCommand option "--md", :flag, _("Format output in markdown") def execute @adapter = option_md? ? MDAdapter.new : TxtAdapter.new print_heading print_help HammerCLI::EX_OK end private def print_heading @adapter.print_heading(_('Hammer CLI help')) @adapter.print_toc(HammerCLI::MainCommand) end def print_help(name='hammer', command=HammerCLI::MainCommand, desc='') @adapter.print_command(name, desc, command.new(name).help) command.recognised_subcommands.each do |sub_cmd| print_help(@adapter.command_name(name, sub_cmd.names.first), sub_cmd.subcommand_class, sub_cmd.description) end end class MDAdapter def command_name(parent, command_name) "#{parent} #{command_name}" end def print_command(name, description, help) print_heading(name, name.split.length) puts description puts puts "```" puts help puts "```" puts end def print_toc(cmd) names = cmd.recognised_subcommands.collect do |sub_cmd| sub_cmd.names[0] end names.sort.each do |name| puts "- [%s](#hammer-%s)" % [name, name.gsub(' ', '-')] end puts end def print_heading(text, level=1) puts '#'*level + ' ' + text end end class TxtAdapter def command_name(parent, command_name) "#{parent} > #{command_name}" end def print_command(name, description, help) print_heading(name, 2) puts description puts puts help puts end def print_toc(cmd) end def print_heading(text, level=1) ch = (level > 1) ? '-' : '=' puts text puts ch * text.length end end end HammerCLI::MainCommand.subcommand "full-help", _("Print help for all hammer commands"), HammerCLI::FullHelpCommand end
Version data entries
16 entries across 16 versions & 1 rubygems