Sha256: 729b375287474b89ac958b55cf21f6af12a7c91da508d563a4a8aa752433f8a8
Contents?: true
Size: 1.59 KB
Versions: 9
Compression:
Stored size: 1.59 KB
Contents
require 'stringio' module Clamp module Help def usage(usage) @declared_usage_descriptions ||= [] @declared_usage_descriptions << usage end attr_reader :declared_usage_descriptions def description=(description) @description = description.dup if @description =~ /^\A\n*( +)/ indent = $1 @description.gsub!(/^#{indent}/, '') end @description.strip! end attr_reader :description def derived_usage_description parts = parameters.map { |a| a.name } parts.unshift("[OPTIONS]") if has_options? parts.join(" ") end def usage_descriptions declared_usage_descriptions || [derived_usage_description] end def help(invocation_path) help = StringIO.new help.puts "Usage:" usage_descriptions.each_with_index do |usage, i| help.puts " #{invocation_path} #{usage}".rstrip end if description help.puts "" help.puts description.gsub(/^/, " ") end detail_format = " %-29s %s" if has_parameters? help.puts "\nParameters:" parameters.each do |parameter| help.puts detail_format % parameter.help end end if has_subcommands? help.puts "\nSubcommands:" recognised_subcommands.each do |subcommand| help.puts detail_format % subcommand.help end end if has_options? help.puts "\nOptions:" recognised_options.each do |option| help.puts detail_format % option.help end end help.string end end end
Version data entries
9 entries across 9 versions & 2 rubygems