aboutsummaryrefslogtreecommitdiff
path: root/IkiWiki.pm
diff options
context:
space:
mode:
authorSimon McVittie <smcv@debian.org>2014-12-09 19:58:36 +0000
committerSimon McVittie <smcv@debian.org>2014-12-09 19:58:36 +0000
commit23b91e69b02065534e5c57449ec82d7fee9f93e0 (patch)
treee7b38d80a123d63b49d1422be0cec159aeed23d8 /IkiWiki.pm
parent32def92ffd082185cde169edb1a6d3a2cceae06a (diff)
parent3ebab88c40bfdddeea16756542ec579daf1f1b5a (diff)
downloadikiwiki-23b91e69b02065534e5c57449ec82d7fee9f93e0.tar
ikiwiki-23b91e69b02065534e5c57449ec82d7fee9f93e0.tar.gz
Merge remote-tracking branch 'spalax/paternal/libdirs'
Diffstat (limited to 'IkiWiki.pm')
-rw-r--r--IkiWiki.pm28
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 ($@) {