underlay plugin, a command-line interface for add_underlay()
authorhttp://smcv.pseudorandom.co.uk/ <http://smcv.pseudorandom.co.uk/@web>
Sun, 18 Jan 2009 14:52:51 +0000 (09:52 -0500)
committerJoey Hess <joey@kitenet.net>
Sun, 18 Jan 2009 14:52:51 +0000 (09:52 -0500)
doc/plugins/contrib/underlay.mdwn [new file with mode: 0644]

diff --git a/doc/plugins/contrib/underlay.mdwn b/doc/plugins/contrib/underlay.mdwn
new file mode 100644 (file)
index 0000000..94651f1
--- /dev/null
@@ -0,0 +1,55 @@
+[[!template id=plugin name=underlay author="[[Simon_McVittie|smcv]]"]]
+[[!tag type/useful]]
+
+This plugin adds an `add_underlays` option to the `.setup` file.
+Its value is a list of underlay directories whose content is added to the wiki.
+
+Multiple underlays are normally set up automatically by other plugins (for
+instance, the smiley images used by [[plugins/smileys]]), but they can also be
+used as a way to pull in external files that you don't want in revision control,
+like photos or software releases.
+
+Directories in `add_underlays` should usually be absolute. If relative, they're
+interpreted as relative to the parent directory of the basewiki underlay, which
+is probably not particularly useful in this context.
+
+    #!/usr/bin/perl
+    package IkiWiki::Plugin::underlay;
+    # Copyright © 2008 Simon McVittie <http://smcv.pseudorandom.co.uk/>
+    # Licensed under the GNU GPL, version 2, or any later version published by the
+    # Free Software Foundation
+
+    use warnings;
+    use strict;
+    use IkiWiki 2.00;
+
+    sub import {
+       hook(type => "getsetup", id => "underlay",  call => \&getsetup);
+       hook(type => "checkconfig", id => "underlay", call => \&checkconfig);
+    }
+
+    sub getsetup () {
+       return
+               plugin => {
+                       safe => 0,
+                       rebuild => undef,
+               },
+               add_underlays => {
+                       type => "string",
+                       default => [],
+                       description => "extra underlay directories to add",
+                       advanced => 1,
+                       safe => 0,
+                       rebuild => 1,
+               },
+    }
+
+    sub checkconfig () {
+       return unless exists $config{add_underlays};
+
+       foreach my $dir (@{$config{add_underlays}}) {
+               add_underlay($dir);
+       }
+    }
+
+    1;