changeset 4483:a11e13d50645

patchbomb: Validate email config before we start prompting for info.
author Bryan O'Sullivan <bos@serpentine.com>
date Sun, 27 May 2007 14:40:14 -0700
parents 62019c4427e3
children c927c568a5ad
files hgext/patchbomb.py mercurial/mail.py
diffstat 2 files changed, 15 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/hgext/patchbomb.py
+++ b/hgext/patchbomb.py
@@ -223,6 +223,9 @@ def patchbomb(ui, repo, *revs, **opts):
                 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
+++ b/mercurial/mail.py
@@ -68,3 +68,15 @@ def connect(ui):
 
 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)