Changeset f7f1a3e in rtems-tools


Ignore:
Timestamp:
04/13/21 21:28:35 (20 months ago)
Author:
Alex White <alex.white@…>
Branches:
5
Children:
bdd785a
Parents:
a7efe4a
git-author:
Alex White <alex.white@…> (04/13/21 21:28:35)
git-committer:
Joel Sherrill <joel@…> (12/16/21 21:26:39)
Message:

rtemstoolkit/mailer.py: Add --use-gitconfig option

This adds the option to pull mail-related configuration values from the
user's git configuration.

Updates #4553

File:
1 edited

Legend:

Unmodified
Added
Removed
  • rtemstoolkit/mailer.py

    ra7efe4a rf7f1a3e  
    4040
    4141from rtemstoolkit import error
     42from rtemstoolkit import execute
    4243from rtemstoolkit import options
    4344from rtemstoolkit import path
     
    4546_options = {
    4647    '--mail'         : 'Send email report or results.',
     48    '--use-gitconfig': 'Use mail configuration from git config.',
    4749    '--mail-to'      : 'Email address to send the email to.',
    4850    '--mail-from'    : 'Email address the report is from.',
     
    5961def add_arguments(argsp):
    6062    argsp.add_argument('--mail', help = _options['--mail'], action = 'store_true')
     63    argsp.add_argument('--use-gitconfig', help = _options['--use-gitconfig'], action = 'store_true')
    6164    for o in list(_options)[1:]:
    6265        argsp.add_argument(o, help = _options[o], type = str)
     
    6568    def __init__(self, opts):
    6669        self.opts = opts
     70        self.gitconfig_lines = None
     71        if opts.find_arg('--use-gitconfig') is not None:
     72            # Read the output of `git config --list` instead of reading the
     73            # .gitconfig file directly because Python 2 ConfigParser does not
     74            # accept tabs at the beginning of lines.
     75            e = execute.capture_execution()
     76            exit_code, proc, output = e.open('git config --list', shell=True)
     77            if exit_code == 0:
     78                self.gitconfig_lines = output.split(os.linesep)
    6779
    6880    def _args_are_macros(self):
     
    8496        return value
    8597
     98    def _get_from_gitconfig(self, variable_name):
     99        if self.gitconfig_lines is None:
     100            return None
     101
     102        for line in self.gitconfig_lines:
     103            if line.startswith(variable_name):
     104                ls = line.split('=')
     105                if len(ls) >= 2:
     106                    return ls[1]
     107
    86108    def from_address(self):
    87109
     
    97119        addr = self._get_arg('--mail-from')
    98120        if addr is not None:
     121            return addr
     122        addr = self._get_from_gitconfig('user.email')
     123        if addr is not None:
     124            name = self._get_from_gitconfig('user.name')
     125            if name is not None:
     126                addr = '%s <%s>' % (name, addr)
    99127            return addr
    100128        mailrc = None
     
    128156        if host is not None:
    129157            return host
     158        host = self._get_from_gitconfig('sendemail.smtpserver')
     159        if host is not None:
     160            return host
    130161        if self._args_are_macros():
    131162            host = self.opts.defaults.get_value('%{_mail_smtp_host}')
     
    138169        if port is not None:
    139170            return port
     171        port = self._get_from_gitconfig('sendemail.smtpserverport')
     172        if port is not None:
     173            return port
    140174        if self._args_are_macros():
    141175            port = self.opts.defaults.get_value('%{_mail_smtp_port}')
     
    143177
    144178    def smtp_user(self):
    145         return self._get_arg('--smtp-user')
     179        user = self._get_arg('--smtp-user')
     180        if user is not None:
     181            return user
     182        user = self._get_from_gitconfig('sendemail.smtpuser')
     183        return user
    146184
    147185    def smtp_password(self):
    148         return self._get_arg('--smtp-password')
     186        password = self._get_arg('--smtp-password')
     187        if password is not None:
     188            return password
     189        password = self._get_from_gitconfig('sendemail.smtppass')
     190        return password
    149191
    150192    def send(self, to_addr, subject, body):
Note: See TracChangeset for help on using the changeset viewer.