mirror of https://github.com/acidanthera/audk.git
BaseTools/PatchCheck.py: Extract email check code to EmailAddressCheck
As we are going to reuse this code out of the CommitMessageCheck class, extract it in a new class: EmailAddressCheck. Cc: Bob Feng <bob.c.feng@intel.com> Cc: Liming Gao <liming.gao@intel.com> Reviewed-by: Bob Feng <bob.c.feng@intel.com> Signed-off-by: Philippe Mathieu-Daude <philmd@redhat.com>
This commit is contained in:
parent
1f0d809629
commit
8ffa47fb3a
|
@ -2,6 +2,7 @@
|
||||||
# Check a patch for various format issues
|
# Check a patch for various format issues
|
||||||
#
|
#
|
||||||
# Copyright (c) 2015 - 2019, Intel Corporation. All rights reserved.<BR>
|
# Copyright (c) 2015 - 2019, Intel Corporation. All rights reserved.<BR>
|
||||||
|
# Copyright (C) 2020, Red Hat, Inc.<BR>
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: BSD-2-Clause-Patent
|
# SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||||
#
|
#
|
||||||
|
@ -22,6 +23,58 @@ class Verbose:
|
||||||
SILENT, ONELINE, NORMAL = range(3)
|
SILENT, ONELINE, NORMAL = range(3)
|
||||||
level = NORMAL
|
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:
|
class CommitMessageCheck:
|
||||||
"""Checks the contents of a git commit message."""
|
"""Checks the contents of a git commit message."""
|
||||||
|
|
||||||
|
@ -121,38 +174,10 @@ class CommitMessageCheck:
|
||||||
if s[2] != ' ':
|
if s[2] != ' ':
|
||||||
self.error("There should be a space after '" + sig + ":'")
|
self.error("There should be a space after '" + sig + ":'")
|
||||||
|
|
||||||
self.check_email_address(s[3])
|
EmailAddressCheck(s[3])
|
||||||
|
|
||||||
return sigs
|
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):
|
def check_signed_off_by(self):
|
||||||
sob='Signed-off-by'
|
sob='Signed-off-by'
|
||||||
if self.msg.find(sob) < 0:
|
if self.msg.find(sob) < 0:
|
||||||
|
|
Loading…
Reference in New Issue