X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/32def92ffd082185cde169edb1a6d3a2cceae06a..23b91e69b02065534e5c57449ec82d7fee9f93e0:/IkiWiki.pm diff --git a/IkiWiki.pm b/IkiWiki.pm index 83679243f..7c55764be 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -362,7 +362,7 @@ sub getsetup () { type => "string", default => "", example => "$ENV{HOME}/.ikiwiki/", - description => "extra library and plugin directory", + description => "extra library and plugin directorys. Can be either a string (for backward compatibility) or a list of strings.", advanced => 1, safe => 0, # directory rebuild => 0, @@ -559,6 +559,20 @@ sub getsetup () { }, } +sub getlibdirs () { + my $libdirs; + if (! ref $config{libdir}) { + if (length $config{libdir}) { + $libdirs = [$config{libdir}]; + } else { + $libdirs = []; + } + } else { + $libdirs = $config{libdir}; + } + return @{$libdirs}; +} + sub defaultconfig () { my %s=getsetup(); my @ret; @@ -701,14 +715,14 @@ sub checkconfig () { sub listplugins () { my %ret; - foreach my $dir (@INC, $config{libdir}) { + foreach my $dir (@INC, getlibdirs()) { next unless defined $dir && length $dir; foreach my $file (glob("$dir/IkiWiki/Plugin/*.pm")) { my ($plugin)=$file=~/.*\/(.*)\.pm$/; $ret{$plugin}=1; } } - foreach my $dir ($config{libdir}, "$installdir/lib/ikiwiki") { + foreach my $dir (getlibdirs(), "$installdir/lib/ikiwiki") { next unless defined $dir && length $dir; foreach my $file (glob("$dir/plugins/*")) { $ret{basename($file)}=1 if -x $file; @@ -720,7 +734,9 @@ sub listplugins () { sub loadplugins () { if (defined $config{libdir} && length $config{libdir}) { - unshift @INC, possibly_foolish_untaint($config{libdir}); + foreach my $dir (getlibdirs()) { + unshift @INC, possibly_foolish_untaint($dir); + } } foreach my $plugin (@{$config{default_plugins}}, @{$config{add_plugins}}) { @@ -753,8 +769,8 @@ sub loadplugin ($;$) { return if ! $force && grep { $_ eq $plugin} @{$config{disable_plugins}}; - foreach my $dir (defined $config{libdir} ? possibly_foolish_untaint($config{libdir}) : undef, - "$installdir/lib/ikiwiki") { + foreach my $possiblytainteddir (getlibdirs(), "$installdir/lib/ikiwiki") { + my $dir = defined $possiblytainteddir ? possibly_foolish_untaint($possiblytainteddir) : undef; if (defined $dir && -x "$dir/plugins/$plugin") { eval { require IkiWiki::Plugin::external }; if ($@) {