patchbomb: Validate email config before we start prompting for info.
--- a/hgext/patchbomb.py Sun May 27 14:26:54 2007 -0700
+++ b/hgext/patchbomb.py Sun May 27 14:40:14 2007 -0700
@@ -223,6 +223,9 @@
pass
os.rmdir(tmpdir)
+ if not opts['test']:
+ mail.validateconfig(ui)
+
# option handling
commands.setremoteconfig(ui, opts)
if opts.get('outgoint') and opts.get('bundle'):
--- a/mercurial/mail.py Sun May 27 14:26:54 2007 -0700
+++ b/mercurial/mail.py Sun May 27 14:40:14 2007 -0700
@@ -68,3 +68,15 @@
def sendmail(ui, sender, recipients, msg):
return connect(ui).sendmail(sender, recipients, msg)
+
+def validateconfig(ui):
+ '''determine if we have enough config data to try sending email.'''
+ method = ui.config('email', 'method', 'smtp')
+ if method == 'smtp':
+ if not ui.config('smtp', 'host'):
+ raise util.Abort(_('smtp specified as email transport, '
+ 'but no smtp host configured'))
+ else:
+ if not util.find_exe(method):
+ raise util.Abort(_('%r specified as email transport, '
+ 'but not in PATH') % method)