#!/usr/bin/env ruby require_relative "../lib/fpm/command" flagsort = lambda { |x| x.sub(/^--(?:\[no-\])?/, "") } if ARGV.length == 0 puts "Command-line Reference" puts "==========================" puts puts "This page documents the command-line flags available in FPM. You can also see this content in your terminal by running ``fpm --help``" puts puts "General Options" puts "---------------" FPM::Command.instance_variable_get(:@declared_options).sort_by { |o| flagsort.call(o.switches.first) }.each do |option| text = option.description.gsub("\n", " ") if option.type == :flag # it's a flag which means there are no parameters to the option puts "* ``#{option.switches.first}``" else puts "* ``#{option.switches.first} #{option.type}``" end if option.switches.length > 1 puts " - Alternate option spellings: ``#{option.switches[1..-1].join(", ")}``" end puts " - #{text}" puts end end FPM::Package.types.sort_by { |k,v| k }.each do |name, type| next if ARGV.length > 0 && ARGV[0].downcase != name.downcase options = type.instance_variable_get(:@options) # Only print the section header if no arguments are given # -- aka, generate the list of all flags grouped by package type. if ARGV.length == 0 puts "#{name}" puts "-" * name.size puts end if options.empty? puts "This package type has no additional options" end options.sort_by { |flag, _| flagsort.call(flag.first) }.each do |flag, param, help, options, block| if param == :flag puts "* ``#{flag.first}``" else puts "* ``#{flag.first} #{param}``" end text = help.sub(/^\([^)]+\) /, "") puts " - #{text}" end puts end