summaryrefslogtreecommitdiff
path: root/IkiWiki
diff options
context:
space:
mode:
authorSimon McVittie <smcv@ http://smcv.pseudorandom.co.uk/>2008-07-14 23:39:22 +0100
committerSimon McVittie <smcv@ http://smcv.pseudorandom.co.uk/>2008-07-14 23:39:22 +0100
commit50a5ab3c4e1db5beb18d86873143e7715fd5b27e (patch)
tree25d464b55aeff93130c618dca207b696537c9e44 /IkiWiki
parent18b3e970ffcc0f74d68538b7094f76442a294609 (diff)
Add aggregateinternal mode to ikiwiki-transition.
Usage: 1. Update all pagespecs that use aggregated pages to use internal() 2. ikiwiki-transition aggregateinternal $srcdir $htmlext (where $srcdir and $htmlext are the srcdir and htmlext options in your .setup file) 3. Add aggregateinternal to your .setup file 4. Rebuild the wiki
Diffstat (limited to 'IkiWiki')
-rw-r--r--IkiWiki/Plugin/aggregate.pm43
1 files changed, 43 insertions, 0 deletions
diff --git a/IkiWiki/Plugin/aggregate.pm b/IkiWiki/Plugin/aggregate.pm
index b3d4a5eec..9da619375 100644
--- a/IkiWiki/Plugin/aggregate.pm
+++ b/IkiWiki/Plugin/aggregate.pm
@@ -113,6 +113,49 @@ sub launchaggregation () { #{{{
return 1;
} #}}}
+sub migrate_to_internal { #{{{
+
+ if (! lockaggregate()) {
+ error("an aggregation process is already running");
+ return;
+ }
+
+ IkiWiki::lockwiki();
+ loadstate();
+
+ foreach my $data (values %guids) {
+ next unless $data->{page};
+
+ $config{aggregateinternal} = 0;
+ my $oldname = pagefile($data->{page});
+
+ $config{aggregateinternal} = 1;
+ my $newname = pagefile($data->{page});
+
+ print "I: $oldname -> $newname\n";
+ if (-e $newname) {
+ if (-e $oldname) {
+ error("$newname already exists");
+ }
+ else {
+ print STDERR
+ "W: already renamed to $newname?\n";
+ }
+ }
+ elsif (-e $oldname) {
+ rename($oldname, $newname) || error("$!");
+ }
+ else {
+ print "W: $oldname not found\n";
+ }
+ }
+
+ savestate();
+ IkiWiki::unlockwiki;
+
+ unlockaggregate();
+} #}}}
+
sub needsbuild (@) { #{{{
my $needsbuild=shift;