summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--IkiWiki/Plugin/anonok.pm1
-rw-r--r--IkiWiki/Plugin/blogspam.pm1
-rw-r--r--IkiWiki/Plugin/bzr.pm1
-rw-r--r--IkiWiki/Plugin/conditional.pm1
-rw-r--r--IkiWiki/Plugin/cvs.pm1
-rw-r--r--IkiWiki/Plugin/darcs.pm1
-rw-r--r--IkiWiki/Plugin/editpage.pm1
-rw-r--r--IkiWiki/Plugin/git.pm1
-rw-r--r--IkiWiki/Plugin/htmlscrubber.pm1
-rw-r--r--IkiWiki/Plugin/httpauth.pm1
-rw-r--r--IkiWiki/Plugin/inline.pm1
-rw-r--r--IkiWiki/Plugin/link.pm1
-rw-r--r--IkiWiki/Plugin/lockedit.pm1
-rw-r--r--IkiWiki/Plugin/mdwn.pm1
-rw-r--r--IkiWiki/Plugin/mercurial.pm1
-rw-r--r--IkiWiki/Plugin/meta.pm1
-rw-r--r--IkiWiki/Plugin/moderatedcomments.pm1
-rw-r--r--IkiWiki/Plugin/monotone.pm1
-rw-r--r--IkiWiki/Plugin/opendiscussion.pm1
-rw-r--r--IkiWiki/Plugin/openid.pm1
-rw-r--r--IkiWiki/Plugin/parentlinks.pm1
-rw-r--r--IkiWiki/Plugin/passwordauth.pm1
-rw-r--r--IkiWiki/Plugin/recentchanges.pm1
-rw-r--r--IkiWiki/Plugin/signinedit.pm1
-rw-r--r--IkiWiki/Plugin/svn.pm1
-rw-r--r--IkiWiki/Plugin/tla.pm1
-rw-r--r--IkiWiki/Setup.pm32
-rw-r--r--IkiWiki/Setup/Standard.pm8
-rw-r--r--debian/changelog2
-rw-r--r--doc/plugins/write.mdwn13
30 files changed, 70 insertions, 11 deletions
diff --git a/IkiWiki/Plugin/anonok.pm b/IkiWiki/Plugin/anonok.pm
index 243b98920..0e74cbfad 100644
--- a/IkiWiki/Plugin/anonok.pm
+++ b/IkiWiki/Plugin/anonok.pm
@@ -15,6 +15,7 @@ sub getsetup () {
plugin => {
safe => 1,
rebuild => 0,
+ section => "auth",
},
anonok_pagespec => {
type => "pagespec",
diff --git a/IkiWiki/Plugin/blogspam.pm b/IkiWiki/Plugin/blogspam.pm
index 626c8ec42..c4e5cf390 100644
--- a/IkiWiki/Plugin/blogspam.pm
+++ b/IkiWiki/Plugin/blogspam.pm
@@ -18,6 +18,7 @@ sub getsetup () {
plugin => {
safe => 1,
rebuild => 0,
+ section => "auth",
},
blogspam_pagespec => {
type => 'pagespec',
diff --git a/IkiWiki/Plugin/bzr.pm b/IkiWiki/Plugin/bzr.pm
index 883007367..1ffdc2353 100644
--- a/IkiWiki/Plugin/bzr.pm
+++ b/IkiWiki/Plugin/bzr.pm
@@ -36,6 +36,7 @@ sub getsetup () {
plugin => {
safe => 0, # rcs plugin
rebuild => undef,
+ section => "rcs",
},
bzr_wrapper => {
type => "string",
diff --git a/IkiWiki/Plugin/conditional.pm b/IkiWiki/Plugin/conditional.pm
index aad617812..beeddc672 100644
--- a/IkiWiki/Plugin/conditional.pm
+++ b/IkiWiki/Plugin/conditional.pm
@@ -16,6 +16,7 @@ sub getsetup {
plugin => {
safe => 1,
rebuild => undef,
+ section => "core",
},
}
diff --git a/IkiWiki/Plugin/cvs.pm b/IkiWiki/Plugin/cvs.pm
index f6db8bc98..26a3e9dd2 100644
--- a/IkiWiki/Plugin/cvs.pm
+++ b/IkiWiki/Plugin/cvs.pm
@@ -85,6 +85,7 @@ sub getsetup () {
plugin => {
safe => 0, # rcs plugin
rebuild => undef,
+ section => "rcs",
},
cvsrepo => {
type => "string",
diff --git a/IkiWiki/Plugin/darcs.pm b/IkiWiki/Plugin/darcs.pm
index 0d68f27e5..1c9538e83 100644
--- a/IkiWiki/Plugin/darcs.pm
+++ b/IkiWiki/Plugin/darcs.pm
@@ -92,6 +92,7 @@ sub getsetup() {
plugin => {
safe => 0, # rcs plugin
rebuild => undef,
+ section => "rcs",
},
darcs_wrapper => {
type => "string",
diff --git a/IkiWiki/Plugin/editpage.pm b/IkiWiki/Plugin/editpage.pm
index 9211cca89..44fe5514a 100644
--- a/IkiWiki/Plugin/editpage.pm
+++ b/IkiWiki/Plugin/editpage.pm
@@ -17,6 +17,7 @@ sub getsetup () {
plugin => {
safe => 1,
rebuild => 1,
+ section => "core",
},
}
diff --git a/IkiWiki/Plugin/git.pm b/IkiWiki/Plugin/git.pm
index 1eec6aee6..b02f4a5ed 100644
--- a/IkiWiki/Plugin/git.pm
+++ b/IkiWiki/Plugin/git.pm
@@ -68,6 +68,7 @@ sub getsetup () {
plugin => {
safe => 0, # rcs plugin
rebuild => undef,
+ section => "rcs",
},
git_wrapper => {
type => "string",
diff --git a/IkiWiki/Plugin/htmlscrubber.pm b/IkiWiki/Plugin/htmlscrubber.pm
index a249cdf7a..ee284a45c 100644
--- a/IkiWiki/Plugin/htmlscrubber.pm
+++ b/IkiWiki/Plugin/htmlscrubber.pm
@@ -40,6 +40,7 @@ sub getsetup () {
plugin => {
safe => 1,
rebuild => undef,
+ section => "core",
},
htmlscrubber_skip => {
type => "pagespec",
diff --git a/IkiWiki/Plugin/httpauth.pm b/IkiWiki/Plugin/httpauth.pm
index b2bb2701a..478f67446 100644
--- a/IkiWiki/Plugin/httpauth.pm
+++ b/IkiWiki/Plugin/httpauth.pm
@@ -20,6 +20,7 @@ sub getsetup () {
plugin => {
safe => 1,
rebuild => 0,
+ section => "auth",
},
cgiauthurl => {
type => "string",
diff --git a/IkiWiki/Plugin/inline.pm b/IkiWiki/Plugin/inline.pm
index 401852513..44919e58c 100644
--- a/IkiWiki/Plugin/inline.pm
+++ b/IkiWiki/Plugin/inline.pm
@@ -49,6 +49,7 @@ sub getsetup () {
plugin => {
safe => 1,
rebuild => undef,
+ section => "core",
},
rss => {
type => "boolean",
diff --git a/IkiWiki/Plugin/link.pm b/IkiWiki/Plugin/link.pm
index 4c1add985..3838aec09 100644
--- a/IkiWiki/Plugin/link.pm
+++ b/IkiWiki/Plugin/link.pm
@@ -20,6 +20,7 @@ sub getsetup () {
plugin => {
safe => 1,
rebuild => 1,
+ section => "core",
},
}
diff --git a/IkiWiki/Plugin/lockedit.pm b/IkiWiki/Plugin/lockedit.pm
index 74ddbb153..1466e8337 100644
--- a/IkiWiki/Plugin/lockedit.pm
+++ b/IkiWiki/Plugin/lockedit.pm
@@ -15,6 +15,7 @@ sub getsetup () {
plugin => {
safe => 1,
rebuild => 0,
+ section => "auth",
},
locked_pages => {
type => "pagespec",
diff --git a/IkiWiki/Plugin/mdwn.pm b/IkiWiki/Plugin/mdwn.pm
index 3de59ef3d..4ddf097ba 100644
--- a/IkiWiki/Plugin/mdwn.pm
+++ b/IkiWiki/Plugin/mdwn.pm
@@ -16,6 +16,7 @@ sub getsetup () {
plugin => {
safe => 1,
rebuild => 1, # format plugin
+ section => "core",
},
multimarkdown => {
type => "boolean",
diff --git a/IkiWiki/Plugin/mercurial.pm b/IkiWiki/Plugin/mercurial.pm
index 11fdec529..ea00a3364 100644
--- a/IkiWiki/Plugin/mercurial.pm
+++ b/IkiWiki/Plugin/mercurial.pm
@@ -36,6 +36,7 @@ sub getsetup () {
plugin => {
safe => 0, # rcs plugin
rebuild => undef,
+ section => "rcs",
},
mercurial_wrapper => {
type => "string",
diff --git a/IkiWiki/Plugin/meta.pm b/IkiWiki/Plugin/meta.pm
index 55c9ddbd1..5f046cb2a 100644
--- a/IkiWiki/Plugin/meta.pm
+++ b/IkiWiki/Plugin/meta.pm
@@ -20,6 +20,7 @@ sub getsetup () {
plugin => {
safe => 1,
rebuild => undef,
+ section => "core",
},
}
diff --git a/IkiWiki/Plugin/moderatedcomments.pm b/IkiWiki/Plugin/moderatedcomments.pm
index 2555927b7..afe1ceedf 100644
--- a/IkiWiki/Plugin/moderatedcomments.pm
+++ b/IkiWiki/Plugin/moderatedcomments.pm
@@ -15,6 +15,7 @@ sub getsetup () {
plugin => {
safe => 1,
rebuild => 0,
+ section => "auth",
},
moderate_users => {
type => 'boolean',
diff --git a/IkiWiki/Plugin/monotone.pm b/IkiWiki/Plugin/monotone.pm
index 9502804f1..c33cf7e3a 100644
--- a/IkiWiki/Plugin/monotone.pm
+++ b/IkiWiki/Plugin/monotone.pm
@@ -68,6 +68,7 @@ sub getsetup () {
plugin => {
safe => 0, # rcs plugin
rebuild => undef,
+ section => "rcs",
},
mtn_wrapper => {
type => "string",
diff --git a/IkiWiki/Plugin/opendiscussion.pm b/IkiWiki/Plugin/opendiscussion.pm
index 5a455940b..2805f60ef 100644
--- a/IkiWiki/Plugin/opendiscussion.pm
+++ b/IkiWiki/Plugin/opendiscussion.pm
@@ -16,6 +16,7 @@ sub getsetup () {
plugin => {
safe => 1,
rebuild => 0,
+ section => "auth",
},
}
diff --git a/IkiWiki/Plugin/openid.pm b/IkiWiki/Plugin/openid.pm
index 382d8286f..bb99446b4 100644
--- a/IkiWiki/Plugin/openid.pm
+++ b/IkiWiki/Plugin/openid.pm
@@ -26,6 +26,7 @@ sub getsetup () {
plugin => {
safe => 1,
rebuild => 0,
+ section => "auth",
},
openidsignup => {
type => "string",
diff --git a/IkiWiki/Plugin/parentlinks.pm b/IkiWiki/Plugin/parentlinks.pm
index e678a057d..728bbc399 100644
--- a/IkiWiki/Plugin/parentlinks.pm
+++ b/IkiWiki/Plugin/parentlinks.pm
@@ -16,6 +16,7 @@ sub getsetup () {
plugin => {
safe => 1,
rebuild => 1,
+ section => "core",
},
}
diff --git a/IkiWiki/Plugin/passwordauth.pm b/IkiWiki/Plugin/passwordauth.pm
index c07065b7d..4848b47bb 100644
--- a/IkiWiki/Plugin/passwordauth.pm
+++ b/IkiWiki/Plugin/passwordauth.pm
@@ -19,6 +19,7 @@ sub getsetup () {
plugin => {
safe => 1,
rebuild => 0,
+ section => "auth",
},
account_creation_password => {
type => "string",
diff --git a/IkiWiki/Plugin/recentchanges.pm b/IkiWiki/Plugin/recentchanges.pm
index 5c7b71aaa..04219b721 100644
--- a/IkiWiki/Plugin/recentchanges.pm
+++ b/IkiWiki/Plugin/recentchanges.pm
@@ -22,6 +22,7 @@ sub getsetup () {
plugin => {
safe => 1,
rebuild => 1,
+ section => "core",
},
recentchangespage => {
type => "string",
diff --git a/IkiWiki/Plugin/signinedit.pm b/IkiWiki/Plugin/signinedit.pm
index 8b44a68f7..31160c02f 100644
--- a/IkiWiki/Plugin/signinedit.pm
+++ b/IkiWiki/Plugin/signinedit.pm
@@ -16,6 +16,7 @@ sub getsetup () {
plugin => {
safe => 1,
rebuild => 0,
+ section => "auth",
},
}
diff --git a/IkiWiki/Plugin/svn.pm b/IkiWiki/Plugin/svn.pm
index 06b987f51..7d27ec842 100644
--- a/IkiWiki/Plugin/svn.pm
+++ b/IkiWiki/Plugin/svn.pm
@@ -44,6 +44,7 @@ sub getsetup () {
plugin => {
safe => 0, # rcs plugin
rebuild => undef,
+ section => "rcs",
},
svnrepo => {
type => "string",
diff --git a/IkiWiki/Plugin/tla.pm b/IkiWiki/Plugin/tla.pm
index f4b20a6ec..16d73b136 100644
--- a/IkiWiki/Plugin/tla.pm
+++ b/IkiWiki/Plugin/tla.pm
@@ -34,6 +34,7 @@ sub getsetup () {
plugin => {
safe => 0, # rcs plugin
rebuild => undef,
+ section => "rcs",
},
tla_wrapper => {
type => "string",
diff --git a/IkiWiki/Setup.pm b/IkiWiki/Setup.pm
index 8a25ecc57..b21bd7bfe 100644
--- a/IkiWiki/Setup.pm
+++ b/IkiWiki/Setup.pm
@@ -77,7 +77,6 @@ sub merge ($) {
sub getsetup () {
# Gets all available setup data from all plugins. Returns an
# ordered list of [plugin, setup] pairs.
- my @ret;
# disable logging to syslog while dumping, broken plugins may
# whine when loaded
@@ -85,27 +84,48 @@ sub getsetup () {
$config{syslog}=undef;
# Load all plugins, so that all setup options are available.
- my @plugins=grep { $_ ne $config{rcs} } sort(IkiWiki::listplugins());
- unshift @plugins, $config{rcs} if $config{rcs}; # rcs plugin 1st
+ my @plugins=IkiWiki::listplugins();
foreach my $plugin (@plugins) {
eval { IkiWiki::loadplugin($plugin) };
if (exists $IkiWiki::hooks{checkconfig}{$plugin}{call}) {
my @s=eval { $IkiWiki::hooks{checkconfig}{$plugin}{call}->() };
}
}
-
+
+ my %sections;
foreach my $plugin (@plugins) {
if (exists $IkiWiki::hooks{getsetup}{$plugin}{call}) {
# use an array rather than a hash, to preserve order
my @s=eval { $IkiWiki::hooks{getsetup}{$plugin}{call}->() };
next unless @s;
- push @ret, [ $plugin, \@s ],
+
+ # set default section value (note use of shared
+ # hashref between array and hash)
+ my %s=@s;
+ if (! exists $s{plugin} || ! $s{plugin}->{section}) {
+ $s{plugin}->{section}="misc";
+ }
+
+ # only the selected rcs plugin is included
+ if ($config{rcs} && $plugin eq $config{rcs}) {
+ $s{plugin}->{section}="core";
+ }
+ elsif ($s{plugin}->{section} eq "rcs") {
+ next;
+ }
+
+ push @{$sections{$s{plugin}->{section}}}, [ $plugin, \@s ];
}
}
$config{syslog}=$syslog;
- return @ret;
+ return map { sort { $a->[0] cmp $b->[0] } @{$sections{$_}} }
+ sort { # core first, then alphabetical
+ ($b eq "core") <=> ($a eq "core")
+ ||
+ $a cmp $b
+ } keys %sections;
}
sub dump ($) {
diff --git a/IkiWiki/Setup/Standard.pm b/IkiWiki/Setup/Standard.pm
index 951bcfc56..c99dbb620 100644
--- a/IkiWiki/Setup/Standard.pm
+++ b/IkiWiki/Setup/Standard.pm
@@ -90,10 +90,18 @@ sub gendump ($) {
# disable logging to syslog while dumping
$config{syslog}=undef;
+ my $curr_section;
push @ret, dumpvalues(\%setup, IkiWiki::getsetup());
foreach my $pair (IkiWiki::Setup::getsetup()) {
my $plugin=$pair->[0];
my $setup=$pair->[1];
+ my %s=@{$setup};
+ my $section=$s{plugin}->{section};
+ if (! defined $curr_section || $curr_section ne $section) {
+ $curr_section=$section;
+ push @ret, "", "\t#", "\t# $section plugins", "\t#";
+ }
+
my @values=dumpvalues(\%setup, @{$setup});
if (@values) {
push @ret, "", "\t# $plugin plugin", @values;
diff --git a/debian/changelog b/debian/changelog
index d74abd0f9..f24a453c8 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -22,6 +22,8 @@ ikiwiki (3.20100123) UNRELEASED; urgency=low
* httpauth: Add httpauth_pagespec setting that can be used to limit
pages to only being edited via users authed with httpauth.
* Allow globs to be used in user() pagespecs.
+ * Group related plugins into sections in the setup file, and drop
+ unused rcs plugins from the setup file.
-- Joey Hess <joeyh@debian.org> Tue, 26 Jan 2010 22:25:33 -0500
diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn
index 082f0e38f..68454d56c 100644
--- a/doc/plugins/write.mdwn
+++ b/doc/plugins/write.mdwn
@@ -457,6 +457,12 @@ describing the option. There can also be an item named "plugin", which
describes the plugin as a whole. For example:
return
+ plugin => {
+ description => "description of this plugin",
+ safe => 1,
+ rebuild => 1,
+ section => "misc",
+ },
option_foo => {
type => "boolean",
description => "enable foo?",
@@ -471,11 +477,6 @@ describes the plugin as a whole. For example:
safe => 1,
rebuild => 0,
},
- plugin => {
- description => "description of this plugin",
- safe => 1,
- rebuild => 1,
- },
* `type` can be "boolean", "string", "integer", "pagespec",
or "internal" (used for values that are not user-visible). The type is
@@ -496,6 +497,8 @@ describes the plugin as a whole. For example:
the plugin) will require a wiki rebuild, false if no rebuild is needed,
and undef if a rebuild could be needed in some circumstances, but is not
strictly required.
+* `section` can optionally specify which section in the config file
+ the plugin fits in.
### genwrapper