As we are going to reuse this code out of the CommitMessageCheck class, extract it in a new class: EmailAddressCheck.
Cc: Liming Gao <liming....@intel.com> Cc: Jordan Justen <jordan.l.jus...@intel.com> Signed-off-by: Philippe Mathieu-Daude <phi...@redhat.com> --- BaseTools/Scripts/PatchCheck.py | 82 +++++++++++++++++++++------------ 1 file changed, 53 insertions(+), 29 deletions(-) diff --git a/BaseTools/Scripts/PatchCheck.py b/BaseTools/Scripts/PatchCheck.py index 2a4e6f603e79..0e654345fcc8 100755 --- a/BaseTools/Scripts/PatchCheck.py +++ b/BaseTools/Scripts/PatchCheck.py @@ -22,6 +22,58 @@ class Verbose: SILENT, ONELINE, NORMAL = range(3) level = NORMAL +class EmailAddressCheck: + """Checks an email address.""" + + def __init__(self, email): + self.ok = True + + if email is None: + self.error('Email address is missing!') + return + + self.check_email_address(email) + + def error(self, *err): + if self.ok and Verbose.level > Verbose.ONELINE: + print('The email address is not valid:') + self.ok = False + if Verbose.level < Verbose.NORMAL: + return + count = 0 + for line in err: + prefix = (' *', ' ')[count > 0] + print(prefix, line) + count += 1 + + email_re1 = re.compile(r'(?:\s*)(.*?)(\s*)<(.+)>\s*$', + re.MULTILINE|re.IGNORECASE) + + def check_email_address(self, email): + email = email.strip() + mo = self.email_re1.match(email) + if mo is None: + self.error("Email format is invalid: " + email.strip()) + return + + name = mo.group(1).strip() + if name == '': + self.error("Name is not provided with email address: " + + email) + else: + quoted = len(name) > 2 and name[0] == '"' and name[-1] == '"' + if name.find(',') >= 0 and not quoted: + self.error('Add quotes (") around name with a comma: ' + + name) + + if mo.group(2) == '': + self.error("There should be a space between the name and " + + "email address: " + email) + + if mo.group(3).find(' ') >= 0: + self.error("The email address cannot contain a space: " + + mo.group(3)) + class CommitMessageCheck: """Checks the contents of a git commit message.""" @@ -121,38 +173,10 @@ class CommitMessageCheck: if s[2] != ' ': self.error("There should be a space after '" + sig + ":'") - self.check_email_address(s[3]) + EmailAddressCheck(s[3]) return sigs - email_re1 = re.compile(r'(?:\s*)(.*?)(\s*)<(.+)>\s*$', - re.MULTILINE|re.IGNORECASE) - - def check_email_address(self, email): - email = email.strip() - mo = self.email_re1.match(email) - if mo is None: - self.error("Email format is invalid: " + email.strip()) - return - - name = mo.group(1).strip() - if name == '': - self.error("Name is not provided with email address: " + - email) - else: - quoted = len(name) > 2 and name[0] == '"' and name[-1] == '"' - if name.find(',') >= 0 and not quoted: - self.error('Add quotes (") around name with a comma: ' + - name) - - if mo.group(2) == '': - self.error("There should be a space between the name and " + - "email address: " + email) - - if mo.group(3).find(' ') >= 0: - self.error("The email address cannot contain a space: " + - mo.group(3)) - def check_signed_off_by(self): sob='Signed-off-by' if self.msg.find(sob) < 0: -- 2.21.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#52886): https://edk2.groups.io/g/devel/message/52886 Mute This Topic: https://groups.io/mt/69462074/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-