<%# encoding: UTF-8%>
<% if face.synopsis -%>
USAGE: <%= face.synopsis %>

<% end -%>
<%= (face.short_description || face.summary || "undocumented subcommand").strip %>

OPTIONS:
<%# Remove these options once we can introspect them normally. -%>
  --render-as FORMAT             - The rendering format to use.
  --verbose                      - Whether to log verbosely.
  --debug                        - Whether to log debug information.
<%	optionroom = 30
	summaryroom = 80 - 5 - optionroom
	
	disp_glob_opts = face.display_global_options.uniq
 	unless disp_glob_opts.empty?
		disp_glob_opts.sort.each do |name|
			option = name
			desc = Puppet.settings.setting(option).desc
			type = Puppet.settings.setting(option).default
			type ||= Puppet.settings.setting(option).type.to_s.upcase -%>
  <%= 		"--#{option} #{type}".ljust(optionroom) + ' - ' -%>
<%			if !(desc) -%>
undocumented option
<%     		elsif desc.length <= summaryroom -%>
<%= 			desc %>
<%			else
				words = desc.split
				wrapped = ['']
				i = 0
				words.each do |word|
					if wrapped[i].length + word.length <= summaryroom
						wrapped[i] << word + ' '
					else
						i += 1
						wrapped[i] = word + ' '
					end
				end -%>
<%= 			wrapped.shift.strip %>
<%				wrapped.each do |line| -%>
<%= 				(' ' * (optionroom + 5) ) + line.strip %>
<%				end
		 	end
	  	end
	end
 	unless face.options.empty?
      face.options.sort.each do |name|
        option = face.get_option name -%>
<%= "  " + option.optparse.join(" | ")[0,(optionroom - 1)].ljust(optionroom) + ' - ' -%>
<%     if !(option.summary) -%>
undocumented option
<%     elsif option.summary.length <= summaryroom -%>
<%= option.summary %>
<%
       else
         words = option.summary.split
         wrapped = ['']
         i = 0
         words.each do |word|
           if wrapped[i].length + word.length <= summaryroom
             wrapped[i] << word + ' '
           else
             i += 1
             wrapped[i] = word + ' '
           end
         end
-%>
<%= wrapped.shift.strip %>
<%       wrapped.each do |line| -%>
<%= (' ' * (optionroom + 5) ) + line.strip %>
<%       end
        end
      end -%>
<% end -%>

ACTIONS:
<% padding = face.actions.map{|x| x.to_s.length}.max + 2
   summaryroom = 80 - (padding + 4)
   face.actions.each do |actionname|
     action = face.get_action(actionname) -%>
  <%= action.name.to_s.ljust(padding) + '  ' -%>
<% if !(action.summary) -%>
undocumented action
<% elsif action.summary.length <= summaryroom -%>
<%= action.summary %>
<% else
          words = action.summary.split
          wrapped = ['']
          i = 0
          words.each do |word|
            if wrapped[i].length + word.length <= summaryroom
              wrapped[i] << word + ' '
            else
              i += 1
              wrapped[i] = word + ' '
            end
          end
-%>
<%= wrapped.shift.strip %>
<%       wrapped.each do |line| -%>
<%= (' ' * (padding + 4) ) + line.strip %>
<%       end
        end
end -%>

<% if face.respond_to? :indirection -%>
TERMINI: <%= face.class.terminus_classes(face.indirection.name).join(", ") %>

<% end -%>
See 'puppet man <%= face.name %>' or 'man puppet-<%= face.name %>' for full help.
