]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/commitdiff
Simplify libdirs: libdirs must be plural, libdir must be a single string
authorSimon McVittie <smcv@debian.org>
Tue, 9 Dec 2014 20:02:03 +0000 (20:02 +0000)
committerSimon McVittie <smcv@debian.org>
Tue, 9 Dec 2014 20:02:03 +0000 (20:02 +0000)
This makes the documentation read more sensibly, and matches how we
handle underlaydirs and underlaydir.

IkiWiki.pm
doc/plugins/install.mdwn

index 7c55764befa0f5d325e01f302ca4a8a036c82256..41baa66135d832d2032d81721f012bf3e62de5b6 100644 (file)
@@ -358,11 +358,20 @@ sub getsetup () {
                safe => 0, # paranoia
                rebuild => 0,
        },
                safe => 0, # paranoia
                rebuild => 0,
        },
+       libdirs => {
+               type => "string",
+               default => [],
+               example => ["$ENV{HOME}/.local/share/ikiwiki"],
+               description => "extra library and plugin directories",
+               advanced => 1,
+               safe => 0, # directory
+               rebuild => 0,
+       },
        libdir => {
                type => "string",
                default => "",
                example => "$ENV{HOME}/.ikiwiki/",
        libdir => {
                type => "string",
                default => "",
                example => "$ENV{HOME}/.ikiwiki/",
-               description => "extra library and plugin directorys. Can be either a string (for backward compatibility) or a list of strings.",
+               description => "extra library and plugin directory (searched after libdirs)",
                advanced => 1,
                safe => 0, # directory
                rebuild => 0,
                advanced => 1,
                safe => 0, # directory
                rebuild => 0,
@@ -560,17 +569,11 @@ sub getsetup () {
 }
 
 sub getlibdirs () {
 }
 
 sub getlibdirs () {
-       my $libdirs;
-       if (! ref $config{libdir}) {
-               if (length $config{libdir}) {
-                       $libdirs = [$config{libdir}];
-               } else {
-                       $libdirs = [];
-               }
-       } else {
-               $libdirs = $config{libdir};
+       my @libdirs = @{$config{libdirs}};
+       if (length $config{libdir}) {
+               push @libdirs, $config{libdir};
        }
        }
-       return @{$libdirs};
+       return @libdirs;
 }
 
 sub defaultconfig () {
 }
 
 sub defaultconfig () {
@@ -733,10 +736,8 @@ sub listplugins () {
 }
 
 sub loadplugins () {
 }
 
 sub loadplugins () {
-       if (defined $config{libdir} && length $config{libdir}) {
-               foreach my $dir (getlibdirs()) {
-                       unshift @INC, possibly_foolish_untaint($dir);
-               }
+       foreach my $dir (getlibdirs()) {
+               unshift @INC, possibly_foolish_untaint($dir);
        }
 
        foreach my $plugin (@{$config{default_plugins}}, @{$config{add_plugins}}) {
        }
 
        foreach my $plugin (@{$config{default_plugins}}, @{$config{add_plugins}}) {
@@ -770,7 +771,7 @@ sub loadplugin ($;$) {
        return if ! $force && grep { $_ eq $plugin} @{$config{disable_plugins}};
 
        foreach my $possiblytainteddir (getlibdirs(), "$installdir/lib/ikiwiki") {
        return if ! $force && grep { $_ eq $plugin} @{$config{disable_plugins}};
 
        foreach my $possiblytainteddir (getlibdirs(), "$installdir/lib/ikiwiki") {
-               my $dir = defined $possiblytainteddir ? possibly_foolish_untaint($possiblytainteddir) : undef;
+               my $dir = possibly_foolish_untaint($possiblytainteddir);
                if (defined $dir && -x "$dir/plugins/$plugin") {
                        eval { require IkiWiki::Plugin::external };
                        if ($@) {
                if (defined $dir && -x "$dir/plugins/$plugin") {
                        eval { require IkiWiki::Plugin::external };
                        if ($@) {
index 8ae1c8bde45ffad5eb56985f2b2e204f2dad7b7c..e810d8777d1abe90e416dbaa51c8440c820e06bf 100644 (file)
@@ -8,14 +8,14 @@ inside the perl search path. For example, if your perl looks in
 `/usr/local/lib/site_perl` for modules, you can locally install ikiwiki
 plugins to `/usr/local/lib/site_perl/IkiWiki/Plugin`
 
 `/usr/local/lib/site_perl` for modules, you can locally install ikiwiki
 plugins to `/usr/local/lib/site_perl/IkiWiki/Plugin`
 
-You can use the `libdir` configuration option to add directories to the
+You can use the `libdirs` and/or `libdir` configuration options to add
+directories to the
 search path. For example, if you set `libdir` to `/home/you/.ikiwiki/`,
 search path. For example, if you set `libdir` to `/home/you/.ikiwiki/`,
-then ikiwiki will look for plugins in `/home/you/.ikiwiki/IkiWiki/Plugin`. This
-configuration option can be either a string (for backward compatibility) or a
-list of strings (to add several directories to the search path).
+then ikiwiki will look for plugins in `/home/you/.ikiwiki/IkiWiki/Plugin`.
 
 Ikiwiki also supports plugins that are external programs. These are
 typically written in some other language than perl. Ikiwiki searches for
 
 Ikiwiki also supports plugins that are external programs. These are
 typically written in some other language than perl. Ikiwiki searches for
-these in `/usr/lib/ikiwiki/plugins` by default. If `libdir` is set, it will
-also look under that directory, for example in `/home/you/.ikiwiki/plugins`.
+these in `/usr/lib/ikiwiki/plugins` by default. If `libdirs` or `libdir` are
+set, it will also look under those directories, for example in
+`/home/you/.ikiwiki/plugins`.
 Note that this type of plugin has to be executable for ikiwiki to use it.
 Note that this type of plugin has to be executable for ikiwiki to use it.