diff options
author | Simon McVittie <smcv@debian.org> | 2014-12-09 19:58:36 +0000 |
---|---|---|
committer | Simon McVittie <smcv@debian.org> | 2014-12-09 19:58:36 +0000 |
commit | 23b91e69b02065534e5c57449ec82d7fee9f93e0 (patch) | |
tree | e7b38d80a123d63b49d1422be0cec159aeed23d8 /IkiWiki.pm | |
parent | 32def92ffd082185cde169edb1a6d3a2cceae06a (diff) | |
parent | 3ebab88c40bfdddeea16756542ec579daf1f1b5a (diff) | |
download | ikiwiki-23b91e69b02065534e5c57449ec82d7fee9f93e0.tar ikiwiki-23b91e69b02065534e5c57449ec82d7fee9f93e0.tar.gz |
Merge remote-tracking branch 'spalax/paternal/libdirs'
Diffstat (limited to 'IkiWiki.pm')
-rw-r--r-- | IkiWiki.pm | 28 |
1 files changed, 22 insertions, 6 deletions
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 ($@) { |