Added --fix flag to check_copyright.py

pull/4694/head
David Garcia Quintas 9 years ago
parent 0ade2d415f
commit fa58786f5f
  1. 22
      tools/distrib/check_copyright.py

@ -54,6 +54,9 @@ argp.add_argument('-a', '--ancient',
default=0,
action='store_const',
const=1)
argp.add_argument('-f', '--fix',
default=False,
action='store_true');
args = argp.parse_args()
# open the license text
@ -90,7 +93,7 @@ KNOWN_BAD = set([
])
RE_YEAR = r'Copyright (?:[0-9]+\-)?([0-9]+), Google Inc\.'
RE_YEAR = r'Copyright (?P<first_year>[0-9]+\-)?(?P<last_year>[0-9]+), Google Inc\.'
RE_LICENSE = dict(
(k, r'\n'.join(
LICENSE_PREFIX[k] +
@ -103,6 +106,9 @@ def load(name):
with open(name) as f:
return '\n'.join(line.rstrip() for line in f.read().splitlines())
def save(name, text):
with open(name, 'w') as f:
f.write(text)
assert(re.search(RE_LICENSE['LICENSE'], load('LICENSE')))
assert(re.search(RE_LICENSE['Makefile'], load('Makefile')))
@ -133,11 +139,23 @@ for filename in subprocess.check_output('git ls-tree -r --name-only -r HEAD',
text = load(filename)
m = re.search(re_license, text)
if m:
gdict = m.groupdict()
last_modified = int(subprocess.check_output('git log -1 --format="%ad" --date=short -- ' + filename, shell=True)[0:4])
latest_claimed = int(m.group(1))
latest_claimed = int(gdict['last_year'])
if last_modified > latest_claimed:
print '%s modified %d but copyright only extends to %d' % (filename, last_modified, latest_claimed)
ok = False
if args.fix:
span_start, span_end = m.span(2)
if not gdict['first_year']:
# prepend the old year to the current one.
text = '{}-{}{}'.format(text[:span_end], last_modified, text[span_end:])
else: # already a year range
# simply update the last year
text = '{}{}{}'.format(text[:span_start], last_modified, text[span_end:])
save(filename, text)
print 'Fixed!'
ok = True
elif 'DO NOT EDIT' not in text and 'AssemblyInfo.cs' not in filename and filename != 'src/boringssl/err_data.c':
log(1, 'copyright missing', filename)
ok = False

Loading…
Cancel
Save