]> sipb.mit.edu Git - ikiwiki.git/blobdiff - IkiWiki/Plugin/autoindex.pm
add plugin safe/rebuild info (part 1 of 2)
[ikiwiki.git] / IkiWiki / Plugin / autoindex.pm
index 0a8d90701e6f9eb2978bcedc46ea37e90eb60eed..ef22ec8a3e9a244d0a4fbd7cf2471827f6f55599 100644 (file)
@@ -7,15 +7,27 @@ use IkiWiki 2.00;
 use Encode;
 
 sub import { #{{{
+       hook(type => "getsetup", id => "autoindex", call => \&getsetup);
        hook(type => "refresh", id => "autoindex", call => \&refresh);
 } # }}}
 
+sub getsetup () { #{{{
+       return
+               plugin => {
+                       safe => 1,
+                       rebuild => 0,
+               },
+} #}}}
+
 sub genindex ($) { #{{{
        my $page=shift;
        my $file=$page.".".$config{default_pageext};
        my $template=template("autoindex.tmpl");
        $template->param(page => $page);
        writefile($file, $config{srcdir}, $template->output);
+       if ($config{rcs}) {
+               IkiWiki::rcs_add($file);
+       }
 } #}}}
 
 sub refresh () { #{{{
@@ -45,9 +57,23 @@ sub refresh () { #{{{
                }
        }, $config{srcdir});
 
+       my @needed;
        foreach my $dir (keys %dirs) {
                if (! exists $pages{$dir}) {
-                       genindex($dir);
+                       push @needed, $dir;
+               }
+       }
+       
+       if (@needed) {
+               if ($config{rcs}) {
+                       IkiWiki::disable_commit_hook();
+               }
+               genindex($_) foreach @needed;
+               if ($config{rcs}) {
+                       IkiWiki::rcs_commit_staged(
+                               gettext("automatic index generation"),
+                               undef, undef);
+                       IkiWiki::enable_commit_hook();
                }
        }
 } #}}}