| Index: tools/git/move_source_file.py
|
| diff --git a/tools/git/move_source_file.py b/tools/git/move_source_file.py
|
| index 18ef1ce82721ce348948d57dccd85f63d5d9ff6c..c6813b53d71c1c35779614c96319aac0b0213f89 100755
|
| --- a/tools/git/move_source_file.py
|
| +++ b/tools/git/move_source_file.py
|
| @@ -65,6 +65,21 @@ def MakeDestinationPath(from_path, to_path):
|
| return to_path
|
|
|
|
|
| +def UpdateIncludePathForBlink(path):
|
| + """Updates |path| as it would be when used in an include statement in Blink.
|
| +
|
| + As Blink has its 'public' and 'Source' folders in the include search path,
|
| + these prefixes of file paths are not included in include statements. For
|
| + example, if |path| is 'public/foo/bar.h', the matching include statement
|
| + is '#include "foo/bar.h"'.
|
| + """
|
| + for prefix in ('public/', 'Source/'):
|
| + if path.startswith(prefix):
|
| + return path[len(prefix):]
|
| +
|
| + return path
|
| +
|
| +
|
| def MoveFile(from_path, to_path):
|
| """Performs a git mv command to move a file from |from_path| to |to_path|.
|
| """
|
| @@ -72,7 +87,7 @@ def MoveFile(from_path, to_path):
|
| raise Exception('Fatal: Failed to run git mv command.')
|
|
|
|
|
| -def UpdatePostMove(from_path, to_path):
|
| +def UpdatePostMove(from_path, to_path, in_blink):
|
| """Given a file that has moved from |from_path| to |to_path|,
|
| updates the moved file's include guard to match the new path and
|
| updates all references to the file in other source files. Also tries
|
| @@ -85,16 +100,23 @@ def UpdatePostMove(from_path, to_path):
|
| if os.path.splitext(from_path)[1] in ['.h', '.hh']:
|
| UpdateIncludeGuard(from_path, to_path)
|
|
|
| + from_include_path = from_path
|
| + to_include_path = to_path
|
| + if in_blink:
|
| + from_include_path = UpdateIncludePathForBlink(from_include_path)
|
| + to_include_path = UpdateIncludePathForBlink(to_include_path)
|
| +
|
| # Update include/import references.
|
| files_with_changed_includes = mffr.MultiFileFindReplace(
|
| - r'(#(include|import)\s*["<])%s([>"])' % re.escape(from_path),
|
| - r'\1%s\3' % to_path,
|
| + r'(#(include|import)\s*["<])%s([>"])' % re.escape(from_include_path),
|
| + r'\1%s\3' % to_include_path,
|
| ['*.cc', '*.h', '*.m', '*.mm', '*.cpp'])
|
|
|
| # Reorder headers in files that changed.
|
| for changed_file in files_with_changed_includes:
|
| def AlwaysConfirm(a, b): return True
|
| - sort_headers.FixFileWithConfirmFunction(changed_file, AlwaysConfirm, True)
|
| + sort_headers.FixFileWithConfirmFunction(changed_file, AlwaysConfirm, True,
|
| + in_blink)
|
|
|
| # Update comments; only supports // comments, which are primarily
|
| # used in our code.
|
| @@ -195,6 +217,8 @@ def main():
|
| print 'Fatal: You must run from the root of a git checkout.'
|
| return 1
|
|
|
| + in_blink = os.getcwd().endswith("third_party/WebKit")
|
| +
|
| parser = optparse.OptionParser(usage='%prog FROM_PATH... TO_PATH')
|
| parser.add_option('--already_moved', action='store_true',
|
| dest='already_moved',
|
| @@ -227,7 +251,7 @@ def main():
|
| to_path = MakeDestinationPath(from_path, orig_to_path)
|
| if not opts.already_moved:
|
| MoveFile(from_path, to_path)
|
| - UpdatePostMove(from_path, to_path)
|
| + UpdatePostMove(from_path, to_path, in_blink)
|
| return 0
|
|
|
|
|
|
|