Skip to content

Commit 4e968ce

Browse files
author
Heston Hoffman
authored
Merge pull request #1075 from puppetlabs/pandoc-man-pages
Use Pandoc to generate man files
2 parents 8211289 + 33dd28e commit 4e968ce

File tree

6 files changed

+38
-13
lines changed

6 files changed

+38
-13
lines changed

Gemfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ group(:generate_references) do
1919
gem 'yard', '~> 0.9'
2020
gem 'rdoc', '~> 6.2'
2121
gem 'rgen', '~> 0.8'
22+
gem 'pandoc-ruby'
2223
gem 'puppet-strings'
2324
gem 'puppet', '~> 6'
2425
gem 'nokogiri', '~> 1.11'

Gemfile.lock

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ GEM
8282
nokogiri (1.11.4-x86_64-darwin)
8383
racc (~> 1.4)
8484
open4 (1.3.4)
85+
pandoc-ruby (2.1.4)
8586
pathutil (0.16.2)
8687
forwardable-extended (~> 2.6)
8788
pragmatic_segmenter (0.3.23)
@@ -166,6 +167,7 @@ DEPENDENCIES
166167
listen (~> 3.5.1)
167168
maruku (~> 0.7)
168169
nokogiri (~> 1.11)
170+
pandoc-ruby
169171
pragmatic_segmenter (~> 0.3)
170172
punkt-segmenter (~> 0.9)
171173
puppet (~> 6)
@@ -179,4 +181,3 @@ DEPENDENCIES
179181
vlad (~> 2.7)
180182
vlad-git (~> 2.1)
181183
yard (~> 0.9)
182-

lib/puppet_references.rb

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,14 @@ def self.build_facter_references(commit)
5454
# Adding this workaround so the build doesn't fail for 3.y. Check with Claire to see if
5555
# we need the CLI docs for 3.y. We can remove this when we stop building 3.y.
5656
version_4 = Gem::Version.create('4.0.0')
57-
references << PuppetReferences::Facter::FacterCli if !is_semantic?(commit) || !is_semantic?(commit) && Gem::Version.create(commit) >= version_4
5857
repo = PuppetReferences::Repo.new('facter', FACTER_DIR)
5958
real_commit = repo.checkout(commit)
59+
if !is_semantic?(commit) || is_semantic?(commit) && Gem::Version.create(commit) >= version_4
60+
references << PuppetReferences::Facter::FacterCli
61+
elsif is_semantic?(commit) && Gem::Version.create(commit) < version_4
62+
reference = PuppetReferences::Facter::FacterCli.new(real_commit)
63+
reference.build_v3_cli
64+
end
6065
build_from_list_of_classes(references, real_commit)
6166
end
6267

lib/puppet_references/facter/facter_cli.rb

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,14 @@ def initialize(*args)
1111
super(*args)
1212
end
1313

14+
15+
def header_data
16+
{title: 'Facter: CLI',
17+
toc: 'columns',
18+
canonical: "#{@latest}/cli.html"}
19+
end
20+
21+
1422
def build_all
1523
require 'open3'
1624
puts 'Building CLI documentation page for facter.'
@@ -23,15 +31,20 @@ def build_all
2331
puts "Encountered an error while building the facter cli docs, will abort: #{err}"
2432
return
2533
end
26-
27-
header_data = {title: 'Facter: CLI',
28-
toc: 'columns',
29-
canonical: "#{@latest}/cli.html"}
3034
content = make_header(header_data) + PREAMBLE + raw_text
3135
filename = OUTPUT_DIR + 'cli.md'
3236
filename.open('w') {|f| f.write(content)}
3337
puts 'CLI documentation is done!'
3438
end
35-
end
39+
40+
def build_v3_cli
41+
filename = OUTPUT_DIR + 'cli.md'
42+
man_filepath = PuppetReferences::FACTER_DIR + 'man/man8/facter.8'
43+
raw_text = PuppetReferences::Util.convert_man(man_filepath)
44+
content = make_header(header_data) + raw_text
45+
filename.open('w') {|f| f.write(content)}
46+
end
47+
48+
end
3649
end
3750
end

lib/puppet_references/puppet/man.rb

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -115,16 +115,13 @@ def get_subcommands
115115
applications
116116
end
117117

118-
def code_wrap(raw_text)
119-
"<pre><code>" + raw_text.gsub('<','&lt;').gsub('>','&gt;') + "</code></pre>"
120-
end
121-
122118
def build_manpage(subcommand)
123119
puts "Man pages: Building #{subcommand}"
124120
header_data = {title: "Man Page: puppet #{subcommand}",
125121
canonical: "#{@latest}/#{subcommand}.html"}
126-
raw_text = PuppetReferences::ManCommand.new(subcommand).get
127-
content = make_header(header_data) + code_wrap(raw_text)
122+
# raw_text = PuppetReferences::ManCommand.new(subcommand).get
123+
man_filepath = "#{PuppetReferences::PUPPET_DIR}" + "/man/man8/puppet-#{subcommand}.8"
124+
content = make_header(header_data) + PuppetReferences::Util.convert_man(man_filepath)
128125
filename = OUTPUT_DIR + "#{subcommand}.md"
129126
filename.open('w') {|f| f.write(content)}
130127
end

lib/puppet_references/util.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,5 +120,13 @@ def self.link_release_notes_if_applicable(component, text, version = nil, agent_
120120
end
121121
end
122122

123+
def self.convert_man(man_filepath)
124+
require 'pandoc-ruby'
125+
PandocRuby.convert([man_filepath], from: :man, to: :markdown)
126+
.gsub(/#(.*?)\n/, '##\1')
127+
.gsub(/:\s\s\s\n\n```\{=html\}\n<!--\s-->\n```/, '')
128+
.gsub(/\n:\s\s\s\s/, '')
129+
end
130+
123131
end
124132
end

0 commit comments

Comments
 (0)