Fix aggregateinternal migration so it skips expired entries, and deletes output
authorSimon McVittie <smcv@ http://smcv.pseudorandom.co.uk/>
Tue, 15 Jul 2008 02:24:05 +0000 (03:24 +0100)
committerSimon McVittie <smcv@ http://smcv.pseudorandom.co.uk/>
Tue, 15 Jul 2008 02:24:05 +0000 (03:24 +0100)
IkiWiki/Plugin/aggregate.pm
doc/ikiwiki-transition.mdwn
doc/plugins/aggregate.mdwn
doc/todo/aggregate_to_internal_pages.mdwn
ikiwiki-transition

index 2fcdec9e73d71ad303ff4f807d8f81a9bcc58248..f648a3f99f053dd99aa0fb255f5994c20358a327 100644 (file)
@@ -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();
index 624268d23b6c49c9a5fea73baefb5962c826f295..3290ca7e908b4328c60329523da5cfd973e0ae6f 100644 (file)
@@ -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
 
index 61743a81644f00c66b4903b8faa2a2db4d654cac..8c2e7b076aa654f6e415d803a6e53d21abb380f7 100644 (file)
@@ -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.
index 017ca242b13493f7451e9e97fff10ef715a868e5..ee3aee17a7f1be6abda9a5b4ce42e56988010273 100644 (file)
@@ -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]]
index 6524297ee6e0fa00749210a5593e70290b3913a4..3e2c89bf9d0166d2a1b29d56541b4b8c272d75d7 100755 (executable)
@@ -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;
 }