Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 #!/usr/bin/env python | |
| 2 # Copyright 2017 the V8 project authors. All rights reserved. | |
| 3 # Use of this source code is governed by a BSD-style license that can be | |
| 4 # found in the LICENSE file. | |
| 5 | |
| 6 import argparse | |
| 7 import os | |
| 8 import shutil | |
| 9 import subprocess | |
| 10 | |
| 11 TARGET_SUBDIR = os.path.join("deps", "v8") | |
| 12 REPOSITORIES = [ [""], | |
| 13 ["testing", "gtest"], | |
| 14 ["third_party", "jinja2"], | |
| 15 ["third_party", "markupsafe"] ] | |
| 16 | |
| 17 def RunGclient(path): | |
| 18 assert os.path.isdir(path) | |
| 19 print ">> Running gclient sync" | |
| 20 subprocess.call("gclient sync --nohooks", | |
| 21 cwd=path, shell=True, stdout=None) | |
|
Michael Achenbach
2017/03/10 13:35:06
nit: stdout=None is the default, can be dropped.
Yang
2017/03/13 08:25:49
Done.
| |
| 22 | |
| 23 def UpdateTarget(repository, options): | |
| 24 source = os.path.join(options.v8_path, *repository) | |
| 25 target = os.path.join(options.node_path, TARGET_SUBDIR, *repository) | |
| 26 print ">> Updating target directory %s" % source | |
|
Michael Achenbach
2017/03/10 13:35:05
nit - readability: it's a bit confusing to read "t
Yang
2017/03/13 08:25:49
You are right. It should print target first and so
| |
| 27 print ">> from active branch at %s" % target | |
| 28 git_commands = [ | |
|
Michael Achenbach
2017/03/10 13:35:05
Is there any assumption about the directory state,
Yang
2017/03/13 08:25:49
Done.
| |
| 29 "git init", # initialize target repo | |
| 30 "git remote add origin %s" % source, # point to the source repo | |
|
Michael Achenbach
2017/03/10 13:35:06
Does this work if the git repro in source folder u
Yang
2017/03/13 08:25:49
I'm not familiar with git cache. Isn't it provided
Michael Achenbach
2017/03/13 10:33:23
Not sure if everything works as expected when maki
| |
| 31 "git fetch origin HEAD", # sync to the current branch | |
| 32 "git reset --hard FETCH_HEAD", # reset to the current branch | |
| 33 "git clean -fd" # delete removed files | |
| 34 ] | |
| 35 try: | |
| 36 for command in git_commands: | |
| 37 subprocess.call(command, cwd=target, shell=True, stdout=None) | |
|
Michael Achenbach
2017/03/10 13:35:06
nit: drop stdout, like above
Yang
2017/03/13 08:25:49
Done.
| |
| 38 except: | |
| 39 print ">> Failed!" | |
|
Michael Achenbach
2017/03/10 13:35:06
Do we need this?
Yang
2017/03/13 08:25:49
Removed
| |
| 40 raise | |
| 41 finally: | |
| 42 # Un-init git. | |
| 43 print ">> Cleaning up" | |
| 44 shutil.rmtree(os.path.join(target, ".git")) | |
| 45 print | |
| 46 | |
| 47 def UpdateGitIgnore(options): | |
| 48 file_name = os.path.join(options.node_path, TARGET_SUBDIR, ".gitignore") | |
| 49 assert os.path.isfile(file_name) | |
| 50 print ">> Updating .gitignore with lines" | |
| 51 with open(file_name, "a") as gitignore: | |
|
Michael Achenbach
2017/03/10 13:35:05
Won't this append over and over again? What if the
Yang
2017/03/13 08:25:49
Done.
| |
| 52 for repository in REPOSITORIES: | |
| 53 sub_repo = "/".join(repository) | |
| 54 if not sub_repo is "": | |
| 55 line = "!/" + sub_repo | |
| 56 print line | |
| 57 gitignore.write(line + "\n") | |
| 58 | |
| 59 def ParseOptions(): | |
| 60 parser = argparse.ArgumentParser(description="Update V8 in Node.js") | |
| 61 parser.add_argument("v8_path", help="Path to V8 checkout") | |
| 62 parser.add_argument("node_path", help="Path to Node.js checkout") | |
| 63 parser.add_argument("--gclient", dest="gclient", | |
| 64 action="store_true", help="Run gclient sync") | |
| 65 options = parser.parse_args() | |
| 66 assert os.path.isdir(options.v8_path) | |
| 67 options.v8_path = os.path.abspath(options.v8_path) | |
| 68 assert os.path.isdir(options.node_path) | |
| 69 options.node_path = os.path.abspath(options.node_path) | |
| 70 return options | |
| 71 | |
| 72 def Main(): | |
| 73 options = ParseOptions() | |
| 74 if options.gclient: | |
| 75 RunGclient(options.v8_path) | |
| 76 [UpdateTarget(repo, options) for repo in REPOSITORIES] | |
|
Michael Achenbach
2017/03/10 13:35:05
I'm having a one-line fetish too, but maybe here i
Yang
2017/03/13 08:25:49
Done.
| |
| 77 UpdateGitIgnore(options) | |
| 78 | |
| 79 if __name__ == "__main__": | |
| 80 Main() | |
| OLD | NEW |