X-Git-Url: https://sipb.mit.edu/gitweb.cgi/ikiwiki.git/blobdiff_plain/49e86d2562dafdfcff4d3ba0d75f80ff0d734b95..8051316904d13de3e467f01ebaeacaa5d8efb1b6:/IkiWiki.pm diff --git a/IkiWiki.pm b/IkiWiki.pm index 7b6c4d622..2f274f384 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -94,52 +94,48 @@ sub getsetup () { #{{{ safe => 0, # don't allow overriding rebuild => 0, }, - historyurl => { - type => "string", - # TODO should be set per-rcs to allow different - # examples and descriptions - default => '', - example => "XXX", - description => "XXX", + 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, }, - diffurl => { + add_plugins => { type => "string", - # TODO ditto above - default => '', - example => "XXX", - description => "XXX", + default => [], + description => "plugins to add to the default configuration", safe => 1, rebuild => 1, }, - discussion => { - type => "boolean", - default => 1, - description => "enable Discussion pages?", + disable_plugins => { + type => "string", + default => [], + description => "plugins to disable", safe => 1, rebuild => 1, }, - svnpath => { - # TODO move + wrappers => { type => "string", - default => "trunk", - description => "path inside svn repo where wiki is located", - safe => 0, # could expose/overwrite data + default => undef, + description => "definitions of wrappers to generate", + safe => 0, rebuild => 0, }, - gitorigin_branch => { - type => "string", - default => "origin", - description => "the git origin to pull from", - safe => 0, # paranoia + wrapper => { + type => "internal", + default => undef, + description => "wrapper filename", + safe => 0, rebuild => 0, }, - gitmaster_branch => { - type => "string", - default => "master", - description => "the git master branch", - safe => 0, # paranoia + wrappermode => { + type => "internal", + default => undef, + description => "mode of wrapper file", + safe => 0, rebuild => 0, }, templatedir => { @@ -191,6 +187,13 @@ sub getsetup () { #{{{ 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", @@ -249,7 +252,37 @@ sub getsetup () { #{{{ 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, + example => '\.wav$', + description => "regexp of source files to ignore", + safe => 0, # regexp + rebuild => 1, + }, wiki_file_prune_regexps => { type => "internal", default => [qr/(^|\/)\.\.(\/|$)/, qr/^\./, qr/\/\./, @@ -324,20 +357,6 @@ sub getsetup () { #{{{ safe => 0, rebuild => 0, }, - wrapper => { - type => "internal", - default => undef, - description => "wrapper file to generate", - safe => 0, - rebuild => 0, - }, - wrappermode => { - type => "internal", - default => undef, - description => "mode of wrapper file", - safe => 0, - rebuild => 0, - }, setup => { type => "internal", default => undef, @@ -345,23 +364,6 @@ sub getsetup () { #{{{ safe => 0, rebuild => 0, }, - plugin => { - type => "internal", - default => [qw{mdwn link inline htmlscrubber passwordauth - openid signinedit lockedit conditional - recentchanges parentlinks}], - description => "enabled plugins", - safe => 0, - rebuild => 1, - }, - libdir => { - type => "internal", - default => undef, - example => "$ENV{HOME}/.ikiwiki/", - description => "extra library and plugin directory", - safe => 0, - rebuild => 0, - }, } #}}} sub defaultconfig () { #{{{ @@ -420,7 +422,7 @@ sub checkconfig () { #{{{ require IkiWiki::Rcs::Stub; } - if (exists $config{umask}) { + if (defined $config{umask}) { umask(possibly_foolish_untaint($config{umask})); } @@ -429,12 +431,32 @@ sub checkconfig () { #{{{ 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}); } - loadplugin($_) foreach @{$config{plugin}}; + loadplugin($_) foreach @{$config{default_plugins}}, @{$config{add_plugins}}; run_hooks(getopt => sub { shift->() }); if (grep /^-/, @ARGV) {