hgext/patchbomb.py
changeset 9647 f69fd20d788d
parent 9612 d051db8e9e44
child 9648 6064de41b7e4
equal deleted inserted replaced
9646:5b001f534452 9647:f69fd20d788d
    74 import email.Utils, email.Encoders, email.Generator
    74 import email.Utils, email.Encoders, email.Generator
    75 from mercurial import cmdutil, commands, hg, mail, patch, util
    75 from mercurial import cmdutil, commands, hg, mail, patch, util
    76 from mercurial.i18n import _
    76 from mercurial.i18n import _
    77 from mercurial.node import bin
    77 from mercurial.node import bin
    78 
    78 
    79 def prompt(ui, prompt, default='', rest=': ', empty_ok=False):
    79 def prompt(ui, prompt, default='', rest=':', empty_ok=False):
    80     if not ui.interactive():
    80     if not ui.interactive():
    81         if default or empty_ok:
    81         if default or empty_ok:
    82             return default
    82             return default
    83         raise util.Abort(_("%sPlease enter a valid value" % (prompt+rest)))
    83         raise util.Abort(_("%s Please enter a valid value" % (prompt+rest)))
    84     if default:
    84     if default:
    85         prompt += ' [%s]' % default
    85         prompt += ' [%s]' % default
    86     prompt += rest
    86     prompt += rest
    87     while True:
    87     while True:
    88         r = ui.prompt(prompt, default=default)
    88         r = ui.prompt(prompt, default=default)
    97 def cdiffstat(ui, summary, patchlines):
    97 def cdiffstat(ui, summary, patchlines):
    98     s = patch.diffstat(patchlines)
    98     s = patch.diffstat(patchlines)
    99     if summary:
    99     if summary:
   100         ui.write(summary, '\n')
   100         ui.write(summary, '\n')
   101         ui.write(s, '\n')
   101         ui.write(s, '\n')
   102     ans = prompt(ui, _('does the diffstat above look okay? '), 'y')
   102     ans = prompt(ui, _('does the diffstat above look okay?'), 'y')
   103     if not ans.lower().startswith('y'):
   103     if not ans.lower().startswith('y'):
   104         raise util.Abort(_('diffstat rejected'))
   104         raise util.Abort(_('diffstat rejected'))
   105     return s
   105     return s
   106 
   106 
   107 def makepatch(ui, repo, patch, opts, _charsets, idx, total, patchname=None):
   107 def makepatch(ui, repo, patch, opts, _charsets, idx, total, patchname=None):
   328         if len(patches) > 1 or opts.get('intro'):
   328         if len(patches) > 1 or opts.get('intro'):
   329             tlen = len(str(len(patches)))
   329             tlen = len(str(len(patches)))
   330 
   330 
   331             flag = ' '.join(opts.get('flag'))
   331             flag = ' '.join(opts.get('flag'))
   332             if flag:
   332             if flag:
   333                 subj = '[PATCH %0*d of %d %s] ' % (tlen, 0, len(patches), flag)
   333                 subj = '[PATCH %0*d of %d %s]' % (tlen, 0, len(patches), flag)
   334             else:
   334             else:
   335                 subj = '[PATCH %0*d of %d] ' % (tlen, 0, len(patches))
   335                 subj = '[PATCH %0*d of %d]' % (tlen, 0, len(patches))
   336             subj += opts.get('subject') or prompt(ui, 'Subject:', rest=subj)
   336             subj += ' ' + (opts.get('subject') or
       
   337                            prompt(ui, 'Subject: ', rest=subj))
   337 
   338 
   338             body = ''
   339             body = ''
   339             if opts.get('diffstat'):
   340             if opts.get('diffstat'):
   340                 d = cdiffstat(ui, _('Final summary:\n'), jumbo)
   341                 d = cdiffstat(ui, _('Final summary:\n'), jumbo)
   341                 if d:
   342                 if d: