diff options
-rw-r--r-- | b4/__init__.py | 25 | ||||
-rw-r--r-- | b4/command.py | 6 | ||||
-rw-r--r-- | b4/ez.py | 25 |
3 files changed, 33 insertions, 23 deletions
diff --git a/b4/__init__.py b/b4/__init__.py index 4e005af..4296b10 100644 --- a/b4/__init__.py +++ b/b4/__init__.py @@ -916,8 +916,8 @@ class LoreMessage: if self.date.tzinfo is None: self.date = self.date.replace(tzinfo=datetime.timezone.utc) - diffre = re.compile(r'^(---.*\n\+\+\+|GIT binary patch|diff --git \w/\S+ \w/\S+)', re.M | re.I) - diffstatre = re.compile(r'^\s*\d+ file.*\d+ (insertion|deletion)', re.M | re.I) + diffre = re.compile(r'^(---.*\n\+\+\+|GIT binary patch|diff --git \w/\S+ \w/\S+)', flags=re.M | re.I) + diffstatre = re.compile(r'^\s*\d+ file.*\d+ (insertion|deletion)', flags=re.M | re.I) # walk until we find the first text/plain part mcharset = self.msg.get_content_charset() @@ -2954,16 +2954,17 @@ def send_mail(smtp: Union[smtplib.SMTP, smtplib.SMTP_SSL, None], msgs: Sequence[ } ses = get_requests_session() res = ses.post(endpoint, json=req) - if res.status_code == 200: - try: - rdata = res.json() - if rdata.get('result') == 'success': - return len(tosend) - except Exception as ex: # noqa - logger.critical('Odd response from the endpoint: %s', res.text) - - logger.critical('500 response from the endpoint: %s', res.text) - return None + try: + rdata = res.json() + if rdata.get('result') == 'success': + return len(tosend) + except Exception as ex: # noqa + logger.critical('Odd response from the endpoint: %s', res.text) + return 0 + + if rdata.get('result') == 'error': + logger.critical('Error from endpoint: %s', rdata.get('message')) + return 0 if smtp: sent = 0 diff --git a/b4/command.py b/b4/command.py index af2ce65..1678d45 100644 --- a/b4/command.py +++ b/b4/command.py @@ -290,14 +290,16 @@ def cmd(): help='Do not send, just dump out raw smtp messages to the stdout') sp_send.add_argument('-o', '--output-dir', help='Do not send, write raw messages to this directory (forces --dry-run)') - sp_send.add_argument('--prefixes', nargs='+', choices=['RFC', 'WIP', 'RESEND'], - help='Prefixes to add to PATCH (e.g. RFC, WIP, RESEND)') + sp_send.add_argument('--prefixes', nargs='+', + help='Prefixes to add to PATCH (e.g. RFC, WIP)') sp_send.add_argument('--no-auto-to-cc', action='store_true', default=False, help='Do not automatically collect To: and Cc: addresses') sp_send.add_argument('--to', nargs='+', help='Addresses to add to the To: list') sp_send.add_argument('--cc', nargs='+', help='Addresses to add to the Cc: list') sp_send.add_argument('--not-me-too', action='store_true', default=False, help='Remove yourself from the To: or Cc: list') + sp_send.add_argument('--resend', action='store_true', default=False, + help='This is a resend of a previously sent series') sp_send.add_argument('--no-sign', action='store_true', default=False, help='Do not cryptographically sign your patches with patatt') ag_sendh = sp_send.add_argument_group('Web submission', 'Authenticate with the web submission endpoint') @@ -821,7 +821,7 @@ def print_pretty_addrs(addrs: list, hdrname: str) -> None: logger.info(' %s', b4.format_addrs([addr])) -def get_prep_branch_as_patches(prefixes: Optional[list] = None, +def get_prep_branch_as_patches(prefixes: Optional[List[str]] = None, movefrom: bool = True, thread: bool = True) -> List[Tuple[str, email.message.Message]]: cover, tracking = load_cover(strip_comments=True) @@ -937,6 +937,12 @@ def cmd_send(cmdargs: argparse.Namespace) -> None: parts = b4.LoreMessage.get_body_parts(cover) trailers.update(parts[2]) + prefixes = cmdargs.prefixes + if cmdargs.prefixes is None: + prefixes = list() + if cmdargs.resend: + prefixes.append('RESEND') + try: patches = get_prep_branch_as_patches(prefixes=cmdargs.prefixes) except RuntimeError as ex: @@ -1121,13 +1127,18 @@ def cmd_send(cmdargs: argparse.Namespace) -> None: if cmdargs.dryrun: logger.info('DRYRUN: Would have sent %s messages', len(send_msgs)) return - else: - logger.info('Sent %s messages', sent) + if not sent: + logger.critical('CRITICAL: Was not able to send messages.') + sys.exit(1) + + logger.info('Sent %s messages', sent) + + if cmdargs.resend: + logger.debug('Not updating cover/tracking on resend') + return - # TODO: need to make the reroll process smoother mybranch = b4.git_get_current_branch() revision = tracking['series']['revision'] - try: strategy = get_cover_strategy() if strategy == 'commit': @@ -1195,10 +1206,6 @@ def cmd_send(cmdargs: argparse.Namespace) -> None: if vrev not in tracking['series']['history']: tracking['series']['history'][vrev] = list() tracking['series']['history'][vrev].append(cover_msgid) - if cmdargs.prefixes and 'RESEND' in cmdargs.prefixes: - logger.info('Not incrementing current revision due to RESEND') - store_cover(cover, tracking) - return oldrev = tracking['series']['revision'] newrev = oldrev + 1 |