Setup automator: Check that each plugin added to the generated setup file can be loaded and that its config is ok. If a plugin fails for any reason, disable it in the generated file. Closes: 532001
parent
9e74d60057
commit
0293ae8e3d
|
@ -98,6 +98,29 @@ sub import (@) {
|
|||
}
|
||||
}
|
||||
|
||||
# Make sure that all the listed plugins can load
|
||||
# and checkconfig is ok. If a plugin fails to work,
|
||||
# remove it from the configuration and keep on truckin'.
|
||||
my %bakconfig=%config; # checkconfig can modify %config so back up
|
||||
if (! eval { IkiWiki::loadplugins(); IkiWiki::checkconfig() }) {
|
||||
foreach my $plugin (@{$config{default_plugins}}, @{$bakconfig{add_plugins}}) {
|
||||
eval {
|
||||
# delete all hooks so that only this plugins's
|
||||
# checkconfig will be run
|
||||
%IkiWiki::hooks=();
|
||||
IkiWiki::loadplugin($plugin);
|
||||
IkiWiki::run_hooks(checkconfig => sub { shift->() });
|
||||
};
|
||||
if ($@) {
|
||||
print STDERR sprintf(gettext("** Disabling plugin %s, since it is failing with this message:"),
|
||||
$plugin)."\n";
|
||||
print STDERR "$@\n";
|
||||
push @{$bakconfig{disable_plugins}}, $plugin;
|
||||
}
|
||||
}
|
||||
}
|
||||
%config=%bakconfig;
|
||||
|
||||
# Generate setup file.
|
||||
require IkiWiki::Setup;
|
||||
IkiWiki::Setup::dump($config{dumpsetup});
|
||||
|
|
|
@ -9,6 +9,10 @@ ikiwiki (3.15) UNRELEASED; urgency=low
|
|||
allow an unterminated """ string to be treated as a series
|
||||
of bare words. Fixes runaway regexp recursion/backtracking
|
||||
in strange situations.
|
||||
* Setup automator: Check that each plugin added to the generated
|
||||
setup file can be loaded and that its config is ok. If a plugin
|
||||
fails for any reason, disable it in the generated file.
|
||||
Closes: 532001
|
||||
|
||||
-- Joey Hess <joeyh@debian.org> Tue, 02 Jun 2009 17:03:41 -0400
|
||||
|
||||
|
|
Loading…
Reference in New Issue