X-Git-Url: http://git.rot13.org/?p=sysadmin-cookbook-html;a=blobdiff_plain;f=bin%2Fhtml.pl;h=0b0d8e2d248ffd0b1979a4f08999b2e0c330125e;hp=0436565491e81c5aed5f44af5d5e90db2afe0fda;hb=6162dd22a7d08579ca796ae0b68008d1b9877774;hpb=0af1b54b628559cca524061dc12875672abe2121 diff --git a/bin/html.pl b/bin/html.pl index 0436565..0b0d8e2 100755 --- a/bin/html.pl +++ b/bin/html.pl @@ -3,12 +3,16 @@ use warnings; use strict; -my $recepies = '/srv/sysadmin-cookbook/recepies'; +my $svn = "http://svn.rot13.org/index.cgi/sysadmin-cookbook"; +my $recepies = 'recepies/'; use File::Find; use File::Slurp; - -my $in_ul = 0; +use File::Path; +use Data::Dump qw/dump/; +use XML::Simple; +use Regexp::Common qw /URI/; +use XML::FeedPP; my @html; sub html { push @html, @_ } @@ -21,32 +25,138 @@ sub file { my $content = read_file $path; $content =~ s{[\n\r\s]+$}{}s; $content =~ s/($escape_re)/$escape{$1}/gs; - return $content; + $content =~ s[$RE{URI}{HTTP}{-keep}][$1]gs; + + my $log = XMLin( scalar `svn log --xml $path`, + ForceArray => [ 'logentry' ], + ); + my $changes = join("\n", + map { + my $d = $_->{date}; + $d =~ s{:\d\d\.\d+Z}{}; + $d =~ s{T}{ }; + my $r = $_->{revision}; + qq|
  • $_->{msg} $d
  • | + } reverse @{ $log->{logentry} } + ); + + $path =~ s{^$recepies/*(.*?[^/]+)$}{$1} || next; + return '' + . qq|| + . ( $path =~ m{(\.sh|Makefile)$}i ? qq|$path| : '' ) + . qq|
    $content
    | + ; } my @names; find({ follow => 0, no_chdir => 1, wanted => sub { - push @names, $_ unless m{/\.}; + push @names, $_ unless m{/\.} || m{^\.}; }}, $recepies ); +my $last_level = 0; +my $toc_html = ''; +sub header { + my ($level, $name) = @_; + + my $display = $name; + $display =~ s{^\d+[\.-]}{}; + $display =~ s{-}{ }g; + $display =~ s{\.\w+$}{}; + + my $anchor = $name; + $anchor =~ s{]+>}{}g; + $anchor =~ s{\W+}{_}g; + + html qq||; + html qq|$display|; + + if ( $last_level > $level ) { + $toc_html .= ""; + } elsif ( $last_level < $level ) { + $toc_html .= "" if $in_ul++; - html "

    $name

    " if $in_ul; +$toc_html .= "" foreach ( 1 .. $last_level ); + +$feed_all->to_file( "rss/index.xml" ); print qq| @@ -55,12 +165,46 @@ print qq| --> +
    Creative Commons License + Sysadmin Cookbook by Dobrica Pavlinusic is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Croatia License. +
    + Source code repository | + . "
    $toc_html
    " , join("\n", @html) , "" ;