X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/302bb836f298c462da8e8bff7b04f1b00ded4665..2b53de66a06dd6449cf81f105bc6cdcf44ebac0d:/IkiWiki/Plugin/aggregate.pm

diff --git a/IkiWiki/Plugin/aggregate.pm b/IkiWiki/Plugin/aggregate.pm
index e93492863..85b398063 100644
--- a/IkiWiki/Plugin/aggregate.pm
+++ b/IkiWiki/Plugin/aggregate.pm
@@ -16,6 +16,7 @@ my %guids;
 
 sub import { #{{{
 	hook(type => "getopt", id => "aggregate", call => \&getopt);
+	hook(type => "getsetup", id => "aggregate", call => \&getsetup);
 	hook(type => "checkconfig", id => "aggregate", call => \&checkconfig);
 	hook(type => "needsbuild", id => "aggregate", call => \&needsbuild);
 	hook(type => "preprocess", id => "aggregate", call => \&preprocess);
@@ -37,6 +38,28 @@ sub getopt () { #{{{
 	);
 } #}}}
 
+sub getsetup () { #{{{
+	return
+		plugin => {
+			safe => 1,
+			rebuild => undef,
+		},
+		aggregateinternal => {
+			type => "boolean",
+			example => 0,
+			description => "enable aggregation to internal pages?",
+			safe => 0, # enabling needs manual transition
+			rebuild => 0,
+		},
+		aggregate_webtrigger => {
+			type => "boolean",
+			example => 0,
+			description => "allow aggregation to be triggered via the web?",
+			safe => 1,
+			rebuild => 0,
+		},
+} #}}}
+
 sub checkconfig () { #{{{
 	if ($config{aggregate} && ! ($config{post_commit} && 
 	                             IkiWiki::commit_hook_enabled())) {
@@ -120,46 +143,52 @@ sub htmlize (@) { #{{{
 	return $params{content};
 } #}}}
 
+# Used by ikiwiki-transition aggregateinternal.
 sub migrate_to_internal { #{{{
-
 	if (! lockaggregate()) {
-		error("an aggregation process is already running");
-		return;
+		error("an aggregation process is currently running");
 	}
 
 	IkiWiki::lockwiki();
 	loadstate();
+	$config{verbose}=1;
 
 	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});
-
-		print "I: $oldname -> $newname\n";
+		
+		debug "moving $oldname -> $newname";
 		if (-e $newname) {
 			if (-e $oldname) {
 				error("$newname already exists");
 			}
 			else {
-				print STDERR 
-					"W: already renamed to $newname?\n";
+				debug("already renamed to $newname?");
 			}
 		}
 		elsif (-e $oldname) {
 			rename($oldname, $newname) || error("$!");
 		}
 		else {
-			print "W: $oldname not found\n";
+			debug("$oldname not found");
+		}
+		if (-e $oldoutput) {
+			require IkiWiki::Render;
+			debug("removing output file $oldoutput");
+			IkiWiki::prune($oldoutput);
 		}
 	}
-
+	
 	savestate();
 	IkiWiki::unlockwiki;
-
+	
 	unlockaggregate();
 } #}}}