safe => 0, # don't allow overriding
rebuild => 0,
},
- discussion => {
- type => "boolean",
- default => 1,
- description => "enable Discussion pages?",
+ default_plugins => {
+ type => "internal",
+ default => [qw{mdwn link inline htmlscrubber passwordauth
+ openid signinedit lockedit conditional
+ recentchanges parentlinks}],
+ description => "plugins to enable by default",
+ safe => 1,
+ rebuild => 1,
+ },
+ add_plugins => {
+ type => "string",
+ default => [],
+ description => "plugins to add to the default configuration",
+ safe => 1,
+ rebuild => 1,
+ },
+ disable_plugins => {
+ type => "string",
+ default => [],
+ description => "plugins to disable",
safe => 1,
rebuild => 1,
},
safe => 0, # changing requires manual transition
rebuild => 1,
},
+ discussion => {
+ type => "boolean",
+ default => 1,
+ description => "enable Discussion pages?",
+ safe => 1,
+ rebuild => 1,
+ },
default_pageext => {
type => "string",
default => "mdwn",
safe => 0, # paranoia
rebuild => 0,
},
-
+ umask => {
+ type => "integer",
+ description => "",
+ example => "022",
+ description => "force ikiwiki to use a particular umask",
+ safe => 0, # paranoia
+ rebuild => 0,
+ },
+ libdir => {
+ type => "string",
+ default => "",
+ example => "$ENV{HOME}/.ikiwiki/",
+ description => "extra library and plugin directory",
+ safe => 0, # directory
+ rebuild => 0,
+ },
+ ENV => {
+ type => "string",
+ default => {},
+ description => "environment variables",
+ safe => 0, # paranoia
+ rebuild => 0,
+ },
exclude => {
type => "string",
default => undef,
safe => 0,
rebuild => 0,
},
- default_plugins => {
- type => "internal",
- default => [qw{mdwn link inline htmlscrubber passwordauth
- openid signinedit lockedit conditional
- recentchanges parentlinks}],
- description => "plugins to enable by default",
- safe => 1,
- rebuild => 1,
- },
- add_plugins => {
- type => "string",
- default => [],
- description => "plugins to add to the default configuration",
- safe => 1,
- rebuild => 1,
- },
- disable_plugins => {
- type => "string",
- default => [],
- description => "plugins to disable",
- safe => 1,
- rebuild => 1,
- },
- libdir => {
- type => "internal",
- default => undef,
- example => "$ENV{HOME}/.ikiwiki/",
- description => "extra library and plugin directory",
- safe => 0,
- rebuild => 0,
- },
} #}}}
sub defaultconfig () { #{{{
require IkiWiki::Rcs::Stub;
}
- if (exists $config{umask}) {
+ if (defined $config{umask}) {
umask(possibly_foolish_untaint($config{umask}));
}
return 1;
} #}}}
+sub listplugins () { #{{{
+ my %ret;
+
+ foreach my $dir (@INC, $config{libdir}) {
+ next unless defined $dir;
+ foreach my $file (glob("$dir/IkiWiki/Plugin/*.pm")) {
+ my ($plugin)=$file=~/.*\/(.*)\.pm$/;
+ $ret{$plugin}=1;
+ }
+ }
+ foreach my $dir ($config{libdir}, "$installdir/lib/ikiwiki") {
+ next unless defined $dir;
+ foreach my $file (glob("$dir/plugins/*")) {
+ $ret{basename($file)}=1 if -x $file;
+ }
+ }
+
+ return keys %ret;
+} #}}}
+
sub loadplugins () { #{{{
if (defined $config{libdir}) {
unshift @INC, possibly_foolish_untaint($config{libdir});