#!/usr/bin/perl
+package IkiWiki;
+
use warnings;
use strict;
use IkiWiki;
-package IkiWiki;
+hook(type => "checkconfig", id => "tla", call => sub { #{{{
+ if (! defined $config{diffurl}) {
+ $config{diffurl}="";
+ }
+ if (length $config{tla_wrapper}) {
+ push @{$config{wrappers}}, {
+ wrapper => $config{tla_wrapper},
+ wrappermode => (defined $config{tla_wrappermode} ? $config{tla_wrappermode} : "06755"),
+ };
+ }
+}); #}}}
+
+hook(type => "getsetup", id => "tla", call => sub { #{{{
+ return
+ tla_wrapper => {
+ type => "string",
+ #example => "", # TODO example
+ description => "tla post-commit executable to generate",
+ safe => 0, # file
+ rebuild => 0,
+ },
+ tla_wrappermode => {
+ type => "string",
+ example => '06755',
+ description => "mode for tla_wrapper (can safely be made suid)",
+ safe => 0,
+ rebuild => 0,
+ },
+ historyurl => {
+ type => "string",
+ #example => "", # TODO example
+ description => "url to show file history ([[file]] substituted)",
+ safe => 1,
+ rebuild => 1,
+ },
+ diffurl => {
+ type => "string",
+ #example => "", # TODO example
+ description => "url to show a diff ([[file]] and [[rev]] substituted)",
+ safe => 1,
+ rebuild => 1,
+ },
+}); #}}}
sub quiet_system (@) {
# See Debian bug #385939.
return undef # success
} #}}}
+sub rcs_commit_staged ($$$) {
+ # Commits all staged changes. Changes can be staged using rcs_add,
+ # rcs_remove, and rcs_rename.
+ my ($message, $user, $ipaddr)=@_;
+
+ error("rcs_commit_staged not implemented for tla"); # TODO
+}
+
sub rcs_add ($) { #{{{
my $file=shift;
}
} #}}}
+sub rcs_remove ($) { # {{{
+ my $file = shift;
+
+ error("rcs_remove not implemented for tla"); # TODO
+} #}}}
+
+sub rcs_rename ($$) { # {{{a
+ my ($src, $dest) = @_;
+
+ error("rcs_rename not implemented for tla"); # TODO
+} #}}}
+
sub rcs_recentchanges ($) {
my $num=shift;
my @ret;
}
my @message;
- push @message, { line => escapeHTML($summ) };
+ push @message, { line => $summ };
my @pages;
return @ret;
}
+sub rcs_diff ($) { #{{{
+ my $rev=shift;
+ my $logs = `tla logs -d $config{srcdir}`;
+ my @changesets = reverse split(/\n/, $logs);
+ my $i;
+
+ for($i=0;$i<$#changesets;$i++) {
+ last if $changesets[$i] eq $rev;
+ }
+
+ my $revminusone = $changesets[$i+1];
+ return `tla diff -d $config{srcdir} $revminusone`;
+} #}}}
+
sub rcs_getctime ($) { #{{{
my $file=shift;
eval q{use Date::Parse};