forked from puppetlabs/puppet
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmanpages.rake
75 lines (62 loc) · 2.8 KB
/
manpages.rake
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# require 'fileutils'
desc "Build Puppet manpages"
task :gen_manpages do
require 'puppet/face'
require 'fileutils'
# TODO: this line is unfortunate. In an ideal world, faces would serve
# as a clear, well-defined entry-point into the code and could be
# responsible for state management all on their own; this really should
# not be necessary. When we can, we should get rid of it.
# --cprice 2012-05-16
Puppet.initialize_settings()
helpface = Puppet::Face[:help, '0.0.1']
manface = Puppet::Face[:man, '0.0.1']
sbins = Dir.glob(%w{sbin/*})
bins = Dir.glob(%w{bin/*})
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/puppet doc --reference configuration > ./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} #{ronn_args} ./man/man8/#{b}.8.ronn}
FileUtils.rm("./man/man8/#{b}.8.ronn")
end
# 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} #{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|
fh.write manface.man("#{face}")
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