diff options
author | intrigeri <intrigeri@boum.org> | 2009-06-06 14:03:40 +0200 |
---|---|---|
committer | intrigeri <intrigeri@boum.org> | 2009-06-06 14:03:40 +0200 |
commit | 86edd73d169600875a10a635ef8df4a644545b0d (patch) | |
tree | 1216eb826f2da7a1c11d84395f25468d1acfa69c /IkiWiki/Setup/Automator.pm | |
parent | 17b3d73f6e65d6a754633902b0dd4716d53b03a9 (diff) | |
parent | e40d2a6b2b1bdf677f11cc4a71595acf609d1e75 (diff) |
Merge commit 'upstream/master' into pub/po
Conflicts:
debian/changelog
debian/control
Signed-off-by: intrigeri <intrigeri@boum.org>
Diffstat (limited to 'IkiWiki/Setup/Automator.pm')
-rw-r--r-- | IkiWiki/Setup/Automator.pm | 23 |
1 files changed, 23 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}); |