tag: optionally write autocreated tags to the transient underlay
authorSimon McVittie <smcv@debian.org>
Sat, 25 Dec 2010 23:01:08 +0000 (23:01 +0000)
committerSimon McVittie <smcv@debian.org>
Fri, 7 Jan 2011 20:09:52 +0000 (20:09 +0000)
For the moment, have the tag test keep the old behaviour.

IkiWiki/Plugin/tag.pm
t/tag.t

index fd5ce1e8a91488ce5d5b20709001fd3d177def97..e4c8a11553a116d9fd400cbda39310208417a148 100644 (file)
@@ -12,6 +12,8 @@ sub import {
        hook(type => "preprocess", id => "tag", call => \&preprocess_tag, scan => 1);
        hook(type => "preprocess", id => "taglink", call => \&preprocess_taglink, scan => 1);
        hook(type => "pagetemplate", id => "tag", call => \&pagetemplate);
        hook(type => "preprocess", id => "tag", call => \&preprocess_tag, scan => 1);
        hook(type => "preprocess", id => "taglink", call => \&preprocess_taglink, scan => 1);
        hook(type => "pagetemplate", id => "tag", call => \&pagetemplate);
+
+       IkiWiki::loadplugin("transient");
 }
 
 sub getopt () {
 }
 
 sub getopt () {
@@ -41,6 +43,14 @@ sub getsetup () {
                        safe => 1,
                        rebuild => undef,
                },
                        safe => 1,
                        rebuild => undef,
                },
+               tag_autocreate_commit => {
+                       type => "boolean",
+                       example => 1,
+                       default => 1,
+                       description => "commit autocreated tag pages",
+                       safe => 1,
+                       rebuild => 0,
+               },
 }
 
 sub taglink ($) {
 }
 
 sub taglink ($) {
@@ -97,8 +107,14 @@ sub gentag ($) {
                        my $template=template("autotag.tmpl");
                        $template->param(tagname => tagname($tag));
                        $template->param(tag => $tag);
                        my $template=template("autotag.tmpl");
                        $template->param(tagname => tagname($tag));
                        $template->param(tag => $tag);
-                       writefile($tagfile, $config{srcdir}, $template->output);
-                       if ($config{rcs}) {
+
+                       my $dir = $config{srcdir};
+                       if (! $config{tag_autocreate_commit}) {
+                               $dir = $IkiWiki::Plugin::transient::transientdir;
+                       }
+
+                       writefile($tagfile, $dir, $template->output);
+                       if ($config{rcs} && $config{tag_autocreate_commit}) {
                                IkiWiki::disable_commit_hook();
                                IkiWiki::rcs_add($tagfile);
                                IkiWiki::rcs_commit_staged(message => $message);
                                IkiWiki::disable_commit_hook();
                                IkiWiki::rcs_add($tagfile);
                                IkiWiki::rcs_commit_staged(message => $message);
diff --git a/t/tag.t b/t/tag.t
index 693900c43e20cf8e72dce43b83c254c5fc94bd9d..f4aac765f2971ff85583b6dccc6843ba7681a340 100755 (executable)
--- a/t/tag.t
+++ b/t/tag.t
@@ -22,6 +22,7 @@ $config{wiki_file_chars} = "-[:alnum:]+/.:_";
 $config{userdir} = "users";
 $config{tagbase} = "tags";
 $config{tag_autocreate} = 1;
 $config{userdir} = "users";
 $config{tagbase} = "tags";
 $config{tag_autocreate} = 1;
+$config{tag_autocreate_commit} = 1;
 $config{default_pageext} = "mdwn";
 $config{wiki_file_prune_regexps} = [qr/^\./];
 $config{underlaydirbase} = '.';
 $config{default_pageext} = "mdwn";
 $config{wiki_file_prune_regexps} = [qr/^\./];
 $config{underlaydirbase} = '.';