Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5d192637 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Use multiple globs/emails in per-file syntax"

parents c9f31dff f77c7f75
Loading
Loading
Loading
Loading
+2 −5
Original line number Diff line number Diff line
@@ -2,10 +2,7 @@ ccross@android.com
dwillemsen@google.com
nanzhang@google.com

per-file * = ccross@android.com
per-file * = dwillemsen@google.com
per-file * = nanzhang@google.com
per-file * = ccross@android.com,dwillemsen@google.com,nanzhang@google.com

# for version updates
per-file version_defaults.mk = aseaton@google.com
per-file version_defaults.mk = elisapascual@google.com
per-file version_defaults.mk = aseaton@google.com,elisapascual@google.com
+1 −8
Original line number Diff line number Diff line
per-file * = ccross@android.com
per-file * = dwillemsen@google.com
per-file * = nanzhang@google.com

per-file dex_preopt*.mk = ngeoffray@google.com
per-file dex_preopt*.mk = calin@google.com
per-file dex_preopt*.mk = mathewi@google.com
per-file dex_preopt*.mk = dbrazdil@google.com
per-file dex_preopt*.mk = ngeoffray@google.com,calin@google.com,mathewi@google.com,dbrazdil@google.com
+1 −2
Original line number Diff line number Diff line
per-file warn.py = chh@google.com
per-file checkowners.py = chh@google.com
per-file warn.py,checkowners.py = chh@google.com
+25 −17
Original line number Diff line number Diff line
@@ -35,22 +35,31 @@ def find_address(address):
    echo('Checking email address: ' + address)
    result = urllib2.urlopen(request).read()
    checked_addresses[address] = result.find('"_account_id":') >= 0
    if checked_addresses[address]:
      echo('Found email address: ' + address)
  return checked_addresses[address]


def check_address(fname, num, address):
  if find_address(address):
    return 0
  print '%s:%d: ERROR: unknown email address: %s' % (fname, num, address)
  return 1


def main():
  # One regular expression to check all valid lines.
  noparent = 'set +noparent'
  email = '([^@ ]+@[^ @]+|\\*)'
  directive = '(%s|%s)' % (email, noparent)
  emails = '(%s( *, *%s)*)' % (email, email)
  directive = '(%s|%s)' % (emails, noparent)
  glob = '[a-zA-Z0-9_\\.\\-\\*\\?]+'
  perfile = 'per-file +' + glob + ' *= *' + directive
  globs = '(%s( *, *%s)*)' % (glob, glob)
  perfile = 'per-file +' + globs + ' *= *' + directive
  pats = '(|%s|%s|%s)$' % (noparent, email, perfile)
  patterns = re.compile(pats)

  # One pattern to capture email address.
  email_address = '.*(@| |=|^)([^@ =]+@[^ @]+)'
  address_pattern = re.compile(email_address)
  address_pattern = re.compile('([^@ ]+@[^ @]+)')
  perfile_pattern = re.compile('per-file +.*=(.*)')

  error = 0
  for fname in args.owners:
@@ -60,17 +69,16 @@ def main():
      num += 1
      stripped_line = re.sub('#.*$', '', line).strip()
      if not patterns.match(stripped_line):
        error = 1
        print('%s:%d: ERROR: unknown line [%s]'
              % (fname, num, line.strip()))
      elif args.check_address and address_pattern.match(stripped_line):
        address = address_pattern.match(stripped_line).group(2)
        if find_address(address):
          echo('Found email address: ' + address)
        else:
          error = 1
          print('%s:%d: ERROR: unknown email address: %s'
                % (fname, num, address))
        error += 1
        print '%s:%d: ERROR: unknown line [%s]' % (fname, num, line.strip())
      elif args.check_address:
        if perfile_pattern.match(stripped_line):
          for addr in perfile_pattern.match(stripped_line).group(1).split(','):
            a = addr.strip()
            if a and a != '*':
              error += check_address(fname, num, addr.strip())
        elif address_pattern.match(stripped_line):
          error += check_address(fname, num, stripped_line)
  sys.exit(error)

if __name__ == '__main__':