]> sipb.mit.edu Git - ikiwiki.git/blobdiff - IkiWiki/Plugin/autoindex.pm
Added only_committed_changes config setting, which speeds up wiki refresh by querying...
[ikiwiki.git] / IkiWiki / Plugin / autoindex.pm
index 5a58c820aaefa1244fd2b08947f82968ce945c37..78571b27677d4377892f8f9a451f1c87dbde365a 100644 (file)
@@ -7,8 +7,10 @@ use IkiWiki 3.00;
 use Encode;
 
 sub import {
+       hook(type => "checkconfig", id => "autoindex", call => \&checkconfig);
        hook(type => "getsetup", id => "autoindex", call => \&getsetup);
        hook(type => "refresh", id => "autoindex", call => \&refresh);
+       IkiWiki::loadplugin("transient");
 }
 
 sub getsetup () {
@@ -17,6 +19,20 @@ sub getsetup () {
                        safe => 1,
                        rebuild => 0,
                },
+               autoindex_commit => {
+                       type => "boolean",
+                       example => 1,
+                       default => 1,
+                       description => "commit autocreated index pages",
+                       safe => 1,
+                       rebuild => 0,
+               },
+}
+
+sub checkconfig () {
+       if (! defined $config{autoindex_commit}) {
+               $config{autoindex_commit} = 1;
+       }
 }
 
 sub genindex ($) {
@@ -28,11 +44,16 @@ sub genindex ($) {
                                $page);
                        debug($message);
 
+                       my $dir = $config{srcdir};
+                       if (! $config{autoindex_commit}) {
+                               $dir = $IkiWiki::Plugin::transient::transientdir;
+                       }
+
                        my $template = template("autoindex.tmpl");
                        $template->param(page => $page);
-                       writefile($file, $config{srcdir}, $template->output);
+                       writefile($file, $dir, $template->output);
 
-                       if ($config{rcs}) {
+                       if ($config{rcs} && $config{autoindex_commit}) {
                                IkiWiki::disable_commit_hook();
                                IkiWiki::rcs_add($file);
                                IkiWiki::rcs_commit_staged(message => $message);
@@ -50,6 +71,7 @@ sub refresh () {
 
        my (%pages, %dirs);
        foreach my $dir ($config{srcdir}, @{$config{underlaydirs}}, $config{underlaydir}) {
+               next if $dir eq $IkiWiki::Plugin::transient::transientdir;
                chdir($dir) || next;
 
                find({