diff options
Diffstat (limited to 'tasks/rake/manpages.rake')
-rw-r--r-- | tasks/rake/manpages.rake | 54 |
1 files changed, 43 insertions, 11 deletions
diff --git a/tasks/rake/manpages.rake b/tasks/rake/manpages.rake index f7275e4c3..a2dc850c8 100644 --- a/tasks/rake/manpages.rake +++ b/tasks/rake/manpages.rake @@ -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
\ No newline at end of file |