5e0909776e
This fixes the unexpected behavior where we only run pylint over the affected Python files *unless* there are affected Python files which we have explicitly blacklisted, in which case we run pylint over ALL Python files in every subdirectory of the Skia checkout, including repos in DEPS. - Added buildtools and common to the blacklist. - Changed to run pylint over all Python files in Skia, like presubmit_support expects. - Fix existing pylint problems. Bug: skia: Change-Id: Ife1321f5ae5eaff2a28cc14c99a82a0716c12677 Reviewed-on: https://skia-review.googlesource.com/137126 Reviewed-by: Eric Boren <borenet@google.com> Commit-Queue: Eric Boren <borenet@google.com>
108 lines
3.4 KiB
Python
108 lines
3.4 KiB
Python
'''
|
|
Copyright 2011 Google Inc.
|
|
|
|
Use of this source code is governed by a BSD-style license that can be
|
|
found in the LICENSE file.
|
|
'''
|
|
|
|
'''
|
|
Updates all copyright headers within our code:
|
|
- For files that already have a copyright header, the header is modified
|
|
while keeping the year and holder intact.
|
|
- For files that don't have a copyright header, we add one with the current
|
|
year and default holder.
|
|
|
|
@author: epoger@google.com
|
|
'''
|
|
|
|
import os
|
|
import sys
|
|
|
|
import fileparser
|
|
|
|
# Only modify copyright stanzas if the copyright holder is one of these.
|
|
ALLOWED_COPYRIGHT_HOLDERS = [
|
|
'Google Inc.',
|
|
'Skia',
|
|
'The Android Open Source Project',
|
|
]
|
|
|
|
def Main(root_directory):
|
|
"""Run everything.
|
|
|
|
@param root_directory root directory within which to modify all files
|
|
"""
|
|
filepaths = GetAllFilepaths(root_directory)
|
|
for filepath in filepaths:
|
|
parser = fileparser.CreateParser(filepath)
|
|
if not parser:
|
|
ReportWarning('cannot find a parser for file %s, skipping...' %
|
|
filepath)
|
|
continue
|
|
old_file_contents = ReadFileIntoString(filepath)
|
|
comment_blocks = parser.FindAllCommentBlocks(old_file_contents)
|
|
if not comment_blocks:
|
|
ReportWarning('cannot find any comment blocks in file %s' %
|
|
filepath)
|
|
old_copyright_block = parser.FindCopyrightBlock(comment_blocks)
|
|
if not old_copyright_block:
|
|
ReportWarning('cannot find copyright block in file %s' % filepath)
|
|
(year, holder) = parser.GetCopyrightBlockAttributes(old_copyright_block)
|
|
if holder and not ConfirmAllowedCopyrightHolder(holder):
|
|
ReportWarning(
|
|
'unrecognized copyright holder "%s" in file %s, skipping...' % (
|
|
holder, filepath))
|
|
continue
|
|
new_copyright_block = parser.CreateCopyrightBlock(year, holder)
|
|
if old_copyright_block:
|
|
new_file_contents = old_file_contents.replace(
|
|
old_copyright_block, new_copyright_block, 1)
|
|
else:
|
|
new_file_contents = new_copyright_block + old_file_contents
|
|
WriteStringToFile(new_file_contents, filepath)
|
|
|
|
def GetAllFilepaths(root_directory):
|
|
"""Return a list of all files (absolute path for each one) within a tree.
|
|
|
|
@param root_directory root directory within which to find all files
|
|
"""
|
|
path_list = []
|
|
for dirpath, _, filenames in os.walk(root_directory):
|
|
for filename in filenames:
|
|
path_list.append(os.path.abspath(os.path.join(dirpath, filename)))
|
|
return path_list
|
|
|
|
def ReportWarning(text):
|
|
"""Report a warning, but continue.
|
|
"""
|
|
print 'warning: %s' % text
|
|
|
|
def ReportError(text):
|
|
"""Report an error and raise an exception.
|
|
"""
|
|
raise IOError(text)
|
|
|
|
def ReadFileIntoString(filepath):
|
|
"""Returns the full contents of this file as a string.
|
|
"""
|
|
with open(filepath, 'r') as file_handle:
|
|
contents = file_handle.read()
|
|
return contents
|
|
|
|
def WriteStringToFile(string, filepath):
|
|
"""Writes this string out to filepath, replacing the file if it already
|
|
exists.
|
|
"""
|
|
with open(filepath, 'w') as file_handle:
|
|
file_handle.write(string)
|
|
|
|
def ConfirmAllowedCopyrightHolder(holder):
|
|
"""Returns True if this is one of our allowed copyright holders.
|
|
|
|
@param holder copyright holder as a string
|
|
"""
|
|
return holder in ALLOWED_COPYRIGHT_HOLDERS
|
|
|
|
|
|
Main(sys.argv[1])
|