From: Simon McVittie <smcv@ http://smcv.pseudorandom.co.uk/>
Date: Tue, 15 Jul 2008 02:24:05 +0000 (+0100)
Subject: Fix aggregateinternal migration so it skips expired entries, and deletes output
X-Git-Tag: 2.54~87^2
X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/commitdiff_plain/b29d11b3c67533ca7addadb40a818a88cf6b8a84?ds=inline

Fix aggregateinternal migration so it skips expired entries, and deletes output
---

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;
 }