diff options
author | Joey Hess <joey@gnu.kitenet.net> | 2009-06-05 16:58:06 -0400 |
---|---|---|
committer | Joey Hess <joey@gnu.kitenet.net> | 2009-06-05 16:58:06 -0400 |
commit | 0293ae8e3d8e7dfd0a92bf20aa4c3d28e2d78ddb (patch) | |
tree | 55f0db22192a6d99c9a7c84b6f872233dcae2cf7 | |
parent | 9e74d600575f59456fa46df22f8be1ec411c9200 (diff) |
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
-rw-r--r-- | IkiWiki/Setup/Automator.pm | 23 | ||||
-rw-r--r-- | debian/changelog | 4 |
2 files changed, 27 insertions, 0 deletions
diff --git a/IkiWiki/Setup/Automator.pm b/IkiWiki/Setup/Automator.pm index 5111541e4..742d67666 100644 --- a/IkiWiki/Setup/Automator.pm +++ b/IkiWiki/Setup/Automator.pm @@ -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}); diff --git a/debian/changelog b/debian/changelog index bbc9b2c15..7d0fb5c80 100644 --- a/debian/changelog +++ b/debian/changelog @@ -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 |