X-Git-Url: https://sipb.mit.edu/gitweb.cgi/ikiwiki.git/blobdiff_plain/8682daad58023fd6297945d602d2044f3e8f063f..fc445f6b70421ffc00cc414b92b038f73804cbc1:/IkiWiki/Setup/Automator.pm diff --git a/IkiWiki/Setup/Automator.pm b/IkiWiki/Setup/Automator.pm index b63c8e245..742d67666 100644 --- a/IkiWiki/Setup/Automator.pm +++ b/IkiWiki/Setup/Automator.pm @@ -58,6 +58,9 @@ sub import (@) { elsif ($config{rcs} eq 'monotone') { $config{mtn_wrapper}=$config{srcdir}."_MTN/ikiwiki-netsync-hook"; } + elsif ($config{rcs} eq 'darcs') { + $config{darcs_wrapper}=$config{repository}."/_darcs/ikiwiki-wrapper"; + } elsif ($config{rcs} eq 'bzr') { # TODO } @@ -95,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}); @@ -117,10 +143,11 @@ sub import (@) { for (;;) { print "Choose a password: "; chomp($password=); + print "\n"; print "Confirm password: "; chomp($password2=); - last if $password2 ne $password; + last if $password2 eq $password; print "Password mismatch.\n\n"; }