#!/usr/bin/perl # cd /doc; ./mkdoc # --> creates ../html/*.html my $MKD = "./Markdown.pl"; use 5.10.0; use strict; use warnings; use lib '../src/lib/Gitolite/Test'; use Tsh; $ENV{TSH_ERREXIT} = 1; try " mkdir ../html; ok git status -s -uno; !/./ git log --oneline -1 " or die 1; my $head = (lines())[0]; main(); try " git checkout gh-pages; ok git reset --hard github/gh-pages; ok cd ..; ok git rm *.html; ok mv html/*.html .; ok git add *.html; ok git commit -m '$head'; ok git checkout master; ok rmdir html; ok " or die 2; sub main { chomp(@ARGV = `find . -name "*.mkd" | cut -c3-`) if not @ARGV; @ARGV = grep { /./ } @ARGV; my @save = @ARGV; my $css_block = join("", ); my %ct; # chapter tocs my %title; my $mf = ''; my $fh; while (<>) { $ARGV =~ /^(?:.*\/)?([^\/]+)\.mkd$/; my $b = $1; if (/^(#+) (?:#(\S+) )?(.*)/) { $title{$b} ||= $3; if ( length($1) == 1 ) { $ct{$b} .= "\n"; $ct{$b} .= " * [$3][$b]\n"; $mf .= "[$b]: $b.html\n"; } else { $ct{$b} .= " " x ( 4 * ( length($1) - 1 ) ); $ct{$b} .= " * "; $ct{$b} .= ( $2 ? "[$3][$2]" : "$3" ); $ct{$b} .= "\n"; $mf .= "[$2]: $b.html" . ($2 ne $b ? "#$2" : "") . "\n" if $2; } } } # open($fh, ">", "master-toc.mk2") # and print $fh $mt # and close $fh; # after this, do this for every mkd (including the master-toc.mkd) # cat $css_block > $base.html # cat $base.mkd $mf | $MKD >> $base.html for my $mkd (@save) { $mkd =~ /^(?:.*\/)?([^\/]+)\.mkd$/; my $b = $1; my $css = $css_block; $css =~ s/%TITLE/$title{$b} || $b/e; open($fh, ">", "../html/$b.html") and print $fh $css and close $fh; my $mkt = `cat $mkd`; $mkt =~ s/^(#+) #(\S+) /$1 <\/a> /mg; $mkt =~ s/^\[\[TOC\]\]/$ct{$b}/mg; open($fh, "|-", "$MKD >> ../html/$b.html") and print $fh $mkt, "\n\n", $mf and close $fh; } } __DATA__ %TITLE

master TOC | main page | license

This is for gitolite "g3"; for older (v2.x) documentation click here