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 wikimaster
parent
18b3e970ff
commit
50a5ab3c4e
|
@ -113,6 +113,49 @@ sub launchaggregation () { #{{{
|
||||||
return 1;
|
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 (@) { #{{{
|
sub needsbuild (@) { #{{{
|
||||||
my $needsbuild=shift;
|
my $needsbuild=shift;
|
||||||
|
|
||||||
|
|
|
@ -99,12 +99,25 @@ sub hashpassword {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub aggregateinternal {
|
||||||
|
$config{srcdir} = shift;
|
||||||
|
$config{wikistatedir} = $config{srcdir}."/.ikiwiki";
|
||||||
|
$config{htmlext} = (shift or "html");
|
||||||
|
|
||||||
|
require IkiWiki::Plugin::aggregate;
|
||||||
|
|
||||||
|
IkiWiki::Plugin::aggregate::migrate_to_internal();
|
||||||
|
|
||||||
|
print "... now add aggregateinternal => 1 to your .setup file\n";
|
||||||
|
}
|
||||||
|
|
||||||
sub usage {
|
sub usage {
|
||||||
print STDERR "Usage: ikiwiki-transition type ...\n";
|
print STDERR "Usage: ikiwiki-transition type ...\n";
|
||||||
print STDERR "Currently supported transition subcommands:\n";
|
print STDERR "Currently supported transition subcommands:\n";
|
||||||
print STDERR " prefix_directives file\n";
|
print STDERR " prefix_directives file\n";
|
||||||
print STDERR " indexdb srcdir\n";
|
print STDERR " indexdb srcdir\n";
|
||||||
print STDERR " hashpassword srcdir\n";
|
print STDERR " hashpassword srcdir\n";
|
||||||
|
print STDERR " aggregateinternal srcdir [htmlext]\n";
|
||||||
exit 1;
|
exit 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -120,6 +133,9 @@ elsif ($mode eq 'hashpassword') {
|
||||||
elsif ($mode eq 'indexdb') {
|
elsif ($mode eq 'indexdb') {
|
||||||
indexdb(@ARGV);
|
indexdb(@ARGV);
|
||||||
}
|
}
|
||||||
|
elsif ($mode eq 'aggregateinternal') {
|
||||||
|
aggregateinternal(@ARGV);
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
usage();
|
usage();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue