diff options
author | Louis <spalax@gresille.org> | 2014-12-06 18:32:02 +0100 |
---|---|---|
committer | Louis <spalax@gresille.org> | 2014-12-06 18:32:02 +0100 |
commit | c8d28b94393d835e58441e59212db646fa3e90ce (patch) | |
tree | 0740ba004f6adaed64e2418c601756ce4d92fe14 /IkiWiki.pm | |
parent | 5bfd0d46386324131e3f07131a73a5826d7f33aa (diff) | |
download | ikiwiki-c8d28b94393d835e58441e59212db646fa3e90ce.tar ikiwiki-c8d28b94393d835e58441e59212db646fa3e90ce.tar.gz |
Allow several extra library and plugin directories (libdir option)
Diffstat (limited to 'IkiWiki.pm')
-rw-r--r-- | IkiWiki.pm | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/IkiWiki.pm b/IkiWiki.pm index 1043ef402..73fedb0a6 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -361,7 +361,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, @@ -551,6 +551,17 @@ sub getsetup () { }, } +sub getlibdirs () { + if (! ref $config{libdir}) { + if (length $config{libdir}) { + return [$config{libdir}]; + } else { + return []; + } + } + return $config{libdir}; +} + sub defaultconfig () { my %s=getsetup(); my @ret; @@ -693,14 +704,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; @@ -712,7 +723,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}}) { @@ -745,8 +758,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 ($@) { |