Skip to content
This repository has been archived by the owner on Nov 29, 2017. It is now read-only.

Commit

Permalink
Maint: Update static man page generator for Faces.
Browse files Browse the repository at this point in the history
The man page updater wasn't making man pages for the new Faces app. This commit
gives it that capability, and handles the name collision on puppet resource.

Reviewed-By: Nick Lewis <nick@puppetlabs.com>
  • Loading branch information
nfagerlund committed Jun 9, 2011
1 parent 95088d3 commit 50d188c
Showing 1 changed file with 43 additions and 11 deletions.
54 changes: 43 additions & 11 deletions tasks/rake/manpages.rake
Original file line number Diff line number Diff line change
Expand Up @@ -2,36 +2,68 @@

desc "Build Puppet manpages"
task :gen_manpages do
require 'puppet/face'
require 'fileutils'

helpface = Puppet::Face[:help, '0.0.1']
manface = Puppet::Face[:man, '0.0.1']
sbins = Dir.glob(%w{sbin/*})
bins = Dir.glob(%w{bin/*})
applications = Dir.glob(%w{lib/puppet/application/*})
non_face_applications = helpface.legacy_applications
faces = Puppet::Face.faces
ronn_args = '--manual="Puppet manual" --organization="Puppet Labs, LLC" -r'

# Locate ronn
ronn = %x{which ronn}.chomp
unless File.executable?(ronn) then fail("Ronn does not appear to be installed.") end

# def write_manpage(text, filename)
# IO.popen("#{ronn} #{ronn_args} -r > #{filename}") do |fh| fh.write text end
# end

# Create puppet.conf.5 man page
# IO.popen("#{ronn} #{ronn_args} > ./man/man5/puppet.conf.5", 'w') do |fh|
# fh.write %x{RUBYLIB=./lib:$RUBYLIB bin/puppetdoc --reference configuration}
# end
%x{RUBYLIB=./lib:$RUBYLIB bin/puppetdoc --reference configuration > ./man/man5/puppetconf.5.ronn}
%x{#{ronn} --manual="Puppet manual" --organization="Puppet Labs, LLC" -r ./man/man5/puppetconf.5.ronn}
File.move("./man/man5/puppetconf.5", "./man/man5/puppet.conf.5")
File.unlink("./man/man5/puppetconf.5.ronn")
%x{#{ronn} #{ronn_args} ./man/man5/puppetconf.5.ronn}
FileUtils.mv("./man/man5/puppetconf.5", "./man/man5/puppet.conf.5")
FileUtils.rm("./man/man5/puppetconf.5.ronn")

# Create LEGACY binary man pages (i.e. delete me for 2.8.0)
binary = bins + sbins
binary.each do |bin|
b = bin.gsub( /^s?bin\//, "")
%x{RUBYLIB=./lib:$RUBYLIB #{bin} --help > ./man/man8/#{b}.8.ronn}
%x{#{ronn} --manual="Puppet manual" --organization="Puppet Labs, LLC" -r ./man/man8/#{b}.8.ronn}
File.unlink("./man/man8/#{b}.8.ronn")
%x{#{ronn} #{ronn_args} ./man/man8/#{b}.8.ronn}
FileUtils.rm("./man/man8/#{b}.8.ronn")
end

# Create modern binary man pages
applications.each do |app|
app.gsub!( /^lib\/puppet\/application\/(.*?)\.rb/, '\1')
# Create regular non-face man pages
non_face_applications.each do |app|
%x{RUBYLIB=./lib:$RUBYLIB bin/puppet #{app} --help > ./man/man8/puppet-#{app}.8.ronn}
%x{#{ronn} --manual="Puppet manual" --organization="Puppet Labs, LLC" -r ./man/man8/puppet-#{app}.8.ronn}
File.unlink("./man/man8/puppet-#{app}.8.ronn")
%x{#{ronn} #{ronn_args} ./man/man8/puppet-#{app}.8.ronn}
FileUtils.rm("./man/man8/puppet-#{app}.8.ronn")
end

# Create face man pages
faces.each do |face|
File.open("./man/man8/puppet-#{face}.8.ronn", 'w') do |fh|
# For some reason no one understands at the moment, it duplicates termini,
# so we have to remove the dupes with a gsub.
fh.write manface.man("#{face}", {:render_as => :s}).gsub(/^(\* `[^`]+`)\n\1/, '\1')
end

%x{#{ronn} #{ronn_args} ./man/man8/puppet-#{face}.8.ronn}
FileUtils.rm("./man/man8/puppet-#{face}.8.ronn")
end

# Vile hack: create puppet resource man page
# Currently, the useless resource face wins against puppet resource in puppet
# man. (And actually, it even gets removed from the list of legacy
# applications.) So we overwrite it with the correct man page at the end.
%x{RUBYLIB=./lib:$RUBYLIB bin/puppet resource --help > ./man/man8/puppet-resource.8.ronn}
%x{#{ronn} #{ronn_args} ./man/man8/puppet-resource.8.ronn}
FileUtils.rm("./man/man8/puppet-resource.8.ronn")

end

0 comments on commit 50d188c

Please sign in to comment.