107a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com#!/usr/bin/env python
207a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com# Copyright 2013 The Chromium Authors. All rights reserved.
307a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com# Use of this source code is governed by a BSD-style license that can be
407a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com# found in the LICENSE file.
507a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com
607a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com"""
707a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.commass-rename: update source files (gyp lists, #includes) to reflect
807a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.coma rename.  Expects "git diff --cached -M" to list a bunch of renames.
907a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com
1007a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.comTo use:
1107a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com  1) git mv foo1 bar1; git mv foo2 bar2; etc.
1207a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com  2) *without committing*, ./tools/git/mass-rename.py
13b5e34e22aa0e019e25f9f913f0e119a9a97e5562commit-bot@chromium.org  3) look at git diff (without --cached) to see what the damage is
1407a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com"""
1507a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com
1607a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com
1707a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.comimport os
1807a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.comimport subprocess
1907a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.comimport sys
2007a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com
2107a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com
2207a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.comBASE_DIR = os.path.abspath(os.path.dirname(__file__))
2307a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com
2407a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com
2507a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.comdef main():
2607a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com  popen = subprocess.Popen('git diff --cached --raw -M',
2707a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com                           shell=True, stdout=subprocess.PIPE)
2807a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com  out, _ = popen.communicate()
2907a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com  if popen.returncode != 0:
3007a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com    return 1
3107a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com  for line in out.splitlines():
3207a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com    parts = line.split('\t')
3307a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com    if len(parts) != 3:
3407a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com      print 'Skipping: %s -- not a rename?' % parts
3507a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com      continue
3607a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com    attrs, fro, to = parts
3707a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com    if attrs.split()[4].startswith('R'):
3807a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com      subprocess.check_call([
3907a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        sys.executable,
4007a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        os.path.join(BASE_DIR, 'move_source_file.py'),
4107a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        '--already_moved',
4207a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        '--no_error_for_non_source_file',
4307a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        fro, to])
4407a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com    else:
4507a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com      print 'Skipping: %s -- not a rename?' % fro
4607a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com  return 0
4707a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com
4807a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com
4907a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.comif __name__ == '__main__':
5007a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com  sys.exit(main())
5107a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com