diff options
Diffstat (limited to 'bin')
-rw-r--r-- | bin/gen-doc.p6 | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/bin/gen-doc.p6 b/bin/gen-doc.p6 new file mode 100644 index 0000000..1e41aa8 --- /dev/null +++ b/bin/gen-doc.p6 @@ -0,0 +1,46 @@ +use v6; +use Pygments; + +my %*POD2HTML-CALLBACKS; +%*POD2HTML-CALLBACKS<code> = sub (:$node, :&default) { + Pygments.highlight($node.contents.join('\n'), "perl6", + :style(Pygments.style('emacs'))) +}; + +use Pod::To::HTML; +use Pod::Load; +use Template::Mustache; + +sub git-version { + run('git', 'tag', '-l', :out).out.lines.first +} +sub pods { dir('./docs', :test( *.IO.extension eq 'pod'|'pod6' )) } + +my $sidebar = pods.sort.map( + -> $p { + my $f = $p.IO.extension('html').basename; + "<li><a href='$f'>{$f.split('.').first.tc}</a></li>" + }); + +sub MAIN(:o(:$output-dir)?) { + $output-dir.IO.add('index.html').spurt( + Template::Mustache.render('./templates/index.mustache'.IO.slurp, + {version => git-version()})); + + pods.map( + -> $pod { + say "Generating html for $pod"; + next if $pod.IO.extension ne 'pod'|'pod6'; + my $html = pod2html( + load($pod.IO), + :templates<templates> + ); + + my $filename = $pod.IO.extension('html'); + my $output = $output-dir.defined ?? + $output-dir.IO.add($filename.basename) !! + $filename; + + spurt $output, $html; + }); +} |