From 90b310b93c3dc3c9e7142fc8d1e0c8c7562659b2 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 26 Jul 2008 18:26:39 -0400 Subject: getsetup-ize svn and bzr --- IkiWiki.pm | 8 -------- IkiWiki/Rcs/bzr.pm | 20 ++++++++++++++++++++ IkiWiki/Rcs/svn.pm | 55 ++++++++++++++++++++++++++++++++++++++++++++---------- 3 files changed, 65 insertions(+), 18 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index edbec77d6..76f1292fc 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -120,14 +120,6 @@ sub getsetup () { #{{{ safe => 1, rebuild => 1, }, - svnpath => { - # TODO move - type => "string", - default => "trunk", - description => "path inside svn repo where wiki is located", - safe => 0, # could expose/overwrite data - rebuild => 0, - }, gitorigin_branch => { type => "string", default => "origin", diff --git a/IkiWiki/Rcs/bzr.pm b/IkiWiki/Rcs/bzr.pm index c80356159..30fa4482e 100644 --- a/IkiWiki/Rcs/bzr.pm +++ b/IkiWiki/Rcs/bzr.pm @@ -8,6 +8,26 @@ use IkiWiki; use Encode; use open qw{:utf8 :std}; +hook(type => "getsetup", id => "bzr", call => sub { #{{{ + return + historyurl => { + type => "string", + default => "", + #example => "", # FIXME add example + description => "url to show file history, using loggerhead ([[file]] substituted)", + safe => 1, + rebuild => 1, + }, + diffurl => { + type => "string", + default => "", + example => "http://example.com/revision?start_revid=[[r2]]#[[file]]-s", + description => "url to view a diff, using loggerhead ([[file]] and [[r2]] substituted)", + safe => 1, + rebuild => 1, + }, +}); #}}} + sub bzr_log ($) { #{{{ my $out = shift; my @infos = (); diff --git a/IkiWiki/Rcs/svn.pm b/IkiWiki/Rcs/svn.pm index 9081c3902..9b8d4be13 100644 --- a/IkiWiki/Rcs/svn.pm +++ b/IkiWiki/Rcs/svn.pm @@ -1,23 +1,58 @@ #!/usr/bin/perl -package IkiWiki::Rcs::svn; +package IkiWiki; use warnings; use strict; use IkiWiki; use POSIX qw(setlocale LC_CTYPE); -sub import { #{{{ - if (exists $IkiWiki::config{svnpath}) { +hook(type => "checkconfig", id => "svn", call => sub { #{{{ + if (! defined $config{svnpath}) { + $config{svnpath}="trunk"; + } + if (exists $config{svnpath}) { # code depends on the path not having extraneous slashes - $IkiWiki::config{svnpath}=~tr#/#/#s; - $IkiWiki::config{svnpath}=~s/\/$//; - $IkiWiki::config{svnpath}=~s/^\///; + $config{svnpath}=~tr#/#/#s; + $config{svnpath}=~s/\/$//; + $config{svnpath}=~s/^\///; } -} #}}} - - -package IkiWiki; +}); #}}} + +hook(type => "getsetup", id => "svn", call => sub { #{{{ + return + svnrepo => { + type => "string", + default => "", + example => "/svn/wiki", + description => "subversion repository location", + safe => 0, # path + rebuild => 0, + }, + svnpath => { + type => "string", + default => "trunk", + description => "path inside repository where the wiki is located", + safe => 0, # paranoia + rebuild => 0, + }, + historyurl => { + type => "string", + default => "", + example => "http://svn.example.org/trunk/[[file]]", + description => "viewvc url to show file history ([[file]] substituted)", + safe => 1, + rebuild => 1, + }, + diffurl => { + type => "string", + default => "", + example => "http://svn.example.org/trunk/[[file]]?root=wiki&r1=[[r1]]&r2=[[r2]]", + description => "viewvc url to show a diff ([[file]], [[r1]], and [[r2]] substituted)", + safe => 1, + rebuild => 1, + }, +}); #}}} # svn needs LC_CTYPE set to a UTF-8 locale, so try to find one. Any will do. sub find_lc_ctype() { -- cgit v1.2.3