use strict;
use IkiWiki;
-sub import { #{{{
- if (exists $IkiWiki::hooks{rcs}) {
- error(gettext("cannot use multiple rcs plugins"));
- }
+sub import {
hook(type => "checkconfig", id => "tla", call => \&checkconfig);
hook(type => "getsetup", id => "tla", call => \&getsetup);
hook(type => "rcs", id => "rcs_update", call => \&rcs_update);
hook(type => "rcs", id => "rcs_recentchanges", call => \&rcs_recentchanges);
hook(type => "rcs", id => "rcs_diff", call => \&rcs_diff);
hook(type => "rcs", id => "rcs_getctime", call => \&rcs_getctime);
-} #}}}
+}
-sub checkconfig () { #{{{
+sub checkconfig () {
if (defined $config{tla_wrapper} && length $config{tla_wrapper}) {
push @{$config{wrappers}}, {
wrapper => $config{tla_wrapper},
wrappermode => (defined $config{tla_wrappermode} ? $config{tla_wrappermode} : "06755"),
};
}
-} #}}}
+}
-sub getsetup () { #{{{
+sub getsetup () {
return
+ plugin => {
+ safe => 0, # rcs plugin
+ rebuild => undef,
+ section => "rcs",
+ },
tla_wrapper => {
type => "string",
#example => "", # TODO example
- description => "tla post-commit executable to generate",
+ description => "tla post-commit hook to generate",
safe => 0, # file
rebuild => 0,
},
safe => 1,
rebuild => 1,
},
-} #}}}
+}
-sub quiet_system (@) { #{{{
+sub quiet_system (@) {
# See Debian bug #385939.
open (SAVEOUT, ">&STDOUT");
close STDOUT;
open (STDOUT, ">&SAVEOUT");
close SAVEOUT;
return $ret;
-} #}}}
+}
-sub rcs_update () { #{{{
+sub rcs_update () {
if (-d "$config{srcdir}/{arch}") {
if (quiet_system("tla", "replay", "-d", $config{srcdir}) != 0) {
warn("tla replay failed\n");
}
}
-} #}}}
+}
-sub rcs_prepedit ($) { #{{{
+sub rcs_prepedit ($) {
my $file=shift;
if (-d "$config{srcdir}/{arch}") {
my $rev=`tla tree-id $config{srcdir}`;
return defined $rev ? $rev : "";
}
-} #}}}
+}
-sub rcs_commit ($$$;$$) { #{{{
+sub rcs_commit ($$$;$$) {
my $file=shift;
my $message=shift;
my $rcstoken=shift;
}
}
return undef # success
-} #}}}
+}
sub rcs_commit_staged ($$$) {
# Commits all staged changes. Changes can be staged using rcs_add,
error("rcs_commit_staged not implemented for tla"); # TODO
}
-sub rcs_add ($) { #{{{
+sub rcs_add ($) {
my $file=shift;
if (-d "$config{srcdir}/{arch}") {
warn("tla add failed\n");
}
}
-} #}}}
+}
-sub rcs_remove ($) { # {{{
+sub rcs_remove ($) {
my $file = shift;
error("rcs_remove not implemented for tla"); # TODO
-} #}}}
+}
-sub rcs_rename ($$) { # {{{a
+sub rcs_rename ($$) {
my ($src, $dest) = @_;
error("rcs_rename not implemented for tla"); # TODO
-} #}}}
+}
sub rcs_recentchanges ($) {
my $num=shift;
return @ret;
}
-sub rcs_diff ($) { #{{{
+sub rcs_diff ($) {
my $rev=shift;
my $logs = `tla logs -d $config{srcdir}`;
my @changesets = reverse split(/\n/, $logs);
my $revminusone = $changesets[$i+1];
return `tla diff -d $config{srcdir} $revminusone`;
-} #}}}
+}
-sub rcs_getctime ($) { #{{{
+sub rcs_getctime ($) {
my $file=shift;
eval q{use Date::Parse};
error($@) if $@;
my $date=str2time($sdate, 'UTC');
debug("found ctime ".localtime($date)." for $file");
return $date;
-} #}}}
+}
1