aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon McVittie <smcv@ http://smcv.pseudorandom.co.uk/>2008-07-15 03:24:05 +0100
committerSimon McVittie <smcv@ http://smcv.pseudorandom.co.uk/>2008-07-15 03:24:05 +0100
commitb29d11b3c67533ca7addadb40a818a88cf6b8a84 (patch)
treeab632ee5678e82d18d14b805384f0b1b108d9942
parentd3008b626ea6130d3b75662725f6f2c412fc71ea (diff)
downloadikiwiki-b29d11b3c67533ca7addadb40a818a88cf6b8a84.tar
ikiwiki-b29d11b3c67533ca7addadb40a818a88cf6b8a84.tar.gz
Fix aggregateinternal migration so it skips expired entries, and deletes output
-rw-r--r--IkiWiki/Plugin/aggregate.pm6
-rw-r--r--doc/ikiwiki-transition.mdwn2
-rw-r--r--doc/plugins/aggregate.mdwn8
-rw-r--r--doc/todo/aggregate_to_internal_pages.mdwn2
-rwxr-xr-xikiwiki-transition10
5 files changed, 17 insertions, 11 deletions
diff --git a/IkiWiki/Plugin/aggregate.pm b/IkiWiki/Plugin/aggregate.pm
index 2fcdec9e7..f648a3f99 100644
--- a/IkiWiki/Plugin/aggregate.pm
+++ b/IkiWiki/Plugin/aggregate.pm
@@ -132,9 +132,11 @@ sub migrate_to_internal { #{{{
foreach my $data (values %guids) {
next unless $data->{page};
+ next if $data->{expired};
$config{aggregateinternal} = 0;
my $oldname = pagefile($data->{page});
+ my $oldoutput = $config{destdir}."/".IkiWiki::htmlpage($data->{page});
$config{aggregateinternal} = 1;
my $newname = pagefile($data->{page});
@@ -154,6 +156,10 @@ sub migrate_to_internal { #{{{
else {
debug("$oldname not found");
}
+ if (-e $oldoutput) {
+ debug("removing output file $oldoutput");
+ unlink($oldoutput) || error ("$!");
+ }
}
savestate();
diff --git a/doc/ikiwiki-transition.mdwn b/doc/ikiwiki-transition.mdwn
index 624268d23..3290ca7e9 100644
--- a/doc/ikiwiki-transition.mdwn
+++ b/doc/ikiwiki-transition.mdwn
@@ -28,7 +28,7 @@ treat these as preprocessor directives and convert them.
# aggregateinternal
The `aggregateinternal` mode moves pages aggregated by the aggregate plugin
-so that the `aggregateinternal` option can be endabled
+so that the `aggregateinternal` option can be enabled.
# indexdb
diff --git a/doc/plugins/aggregate.mdwn b/doc/plugins/aggregate.mdwn
index 61743a816..8c2e7b076 100644
--- a/doc/plugins/aggregate.mdwn
+++ b/doc/plugins/aggregate.mdwn
@@ -100,8 +100,8 @@ you should follow this process:
in those PageSpecs. For example, if the PageSpec was `foo/*`, it should
be changed to `internal(foo/*)`. This has to be done because internal
pages are not matched by regular globs.
-2. Use [[ikiwiki-transition]] to move all existing aggregated `.html`
- files. The command to run is `ikiwiki-transition aggregateinternal $srcdir`,
- or if you have changed the `htmlext` option to something other than "html",
- `ikiwiki-transition aggregateinternal $srcdir $htmlext`
+2. Use [[ikiwiki-transition]] to rename all existing aggregated `.html`
+ files in the input directory, and delete the corresponding files from
+ the output directory. The command to run is
+ `ikiwiki-transition aggregateinternal $setupfile`
3. Turn on `aggregateinternal` in the setup file and rebuild the wiki.
diff --git a/doc/todo/aggregate_to_internal_pages.mdwn b/doc/todo/aggregate_to_internal_pages.mdwn
index 017ca242b..ee3aee17a 100644
--- a/doc/todo/aggregate_to_internal_pages.mdwn
+++ b/doc/todo/aggregate_to_internal_pages.mdwn
@@ -53,7 +53,7 @@ change their pagespecs to use `internal()`.
> I've patched ikiwiki-transition to have an aggregateinternal mode.
> See my aggregateinternal branch, again.
-> "ikiwiki-transition aggregateinternal $srcdir $htmlext" moves the pages around,
+> "ikiwiki-transition aggregateinternal $setupfile" moves the pages around,
> although it doesn't update the pagespecs (I wouldn't know how...) --[[smcv]]
[[patch]]
diff --git a/ikiwiki-transition b/ikiwiki-transition
index 6524297ee..3e2c89bf9 100755
--- a/ikiwiki-transition
+++ b/ikiwiki-transition
@@ -100,12 +100,12 @@ sub hashpassword {
}
sub aggregateinternal {
- $config{srcdir} = shift;
- $config{wikistatedir} = $config{srcdir}."/.ikiwiki";
- $config{htmlext} = (shift or "html");
-
+ require IkiWiki::Setup;
require IkiWiki::Plugin::aggregate;
+ %config = (IkiWiki::defaultconfig(), IkiWiki::Setup::load(shift));
+ IkiWiki::checkconfig();
+
IkiWiki::Plugin::aggregate::migrate_to_internal();
print "... now add aggregateinternal => 1 to your .setup file\n";
@@ -117,7 +117,7 @@ sub usage {
print STDERR " prefix_directives file\n";
print STDERR " indexdb srcdir\n";
print STDERR " hashpassword srcdir\n";
- print STDERR " aggregateinternal srcdir [htmlext]\n";
+ print STDERR " aggregateinternal setupfile\n";
exit 1;
}