Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(358)

Side by Side Diff: mojo/public/tools/git/dart_pub_get.py

Issue 1346773002: Stop running pub get at gclient sync time and fix build bugs (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 #!/usr/bin/python
zra 2015/09/16 16:03:53 One of the things that pub does is ensure that pac
2 # Copyright 2015 The Chromium 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 """This script runs "pub get" on all directories within the tree that have
7 pubspec.yaml files.
8
9 See https://www.dartlang.org/tools/pub/get-started.html for information about
10 the pub tool."""
11
12 import argparse
13 import os
14 import subprocess
15 import sys
16
17 def pub_get(dart_sdk_path, target_directory, upgrade):
18 cmd = [
19 os.path.join(dart_sdk_path, "bin/pub")
20 ]
21 if upgrade:
22 cmd.extend(["upgrade"])
23 else:
24 cmd.extend(["get"])
25
26 # Cache the downloaded pubs inside the repo to avoid the chance of multiple
27 # simultaneous builds in different repos stomping on each other.
28 env = os.environ.copy()
29 env["PUB_CACHE"] = os.path.join(os.getcwd(), "dart-pub-cache")
30 try:
31 subprocess.check_output(cmd, shell=False,
32 stderr=subprocess.STDOUT,
33 cwd=target_directory,
34 env=env)
35 except subprocess.CalledProcessError as e:
36 print('Error running pub get in %s' % target_directory)
37 print(e.output)
38 raise e
39
40
41
42 def main(repository_root, dart_sdk_path, dirs_to_ignore, upgrade):
43 os.chdir(repository_root)
44
45 # Relativize dart_sdk_path to repository_root.
46 dart_sdk_path_from_root = os.path.join(repository_root,
47 os.path.relpath(dart_sdk_path, repository_root))
48
49 cmd = ["git", "ls-files", "*/pubspec.yaml"]
50 pubspec_yaml_files = subprocess.check_output(cmd,
51 shell=False,
52 stderr=subprocess.STDOUT)
53
54 for f in pubspec_yaml_files.split():
55 ignore = reduce(lambda x, y: x or f.startswith(y), dirs_to_ignore, False)
56 if ignore:
57 continue
58 pub_get(dart_sdk_path_from_root, os.path.dirname(f), upgrade)
59
60
61 if __name__ == '__main__':
62 parser = argparse.ArgumentParser(
63 description="Run 'pub get' on all directories with checked-in "
64 "pubspec.yaml files")
65 parser.add_argument("--repository-root",
66 metavar="<repository-root>",
67 type=str,
68 required=True,
69 help="Path to the root of the Git repository, "
70 "specified as a relative path from this directory.")
71 parser.add_argument("--dart-sdk-directory",
72 metavar="<dart-sdk-directory>",
73 type=str,
74 required=True,
75 help="Path to the directory containing the Dart SDK, "
76 "specified as a relative path from this directory.")
77 parser.add_argument("--dirs-to-ignore",
78 metavar="<dir>",
79 nargs="+",
80 default=[],
81 type=str,
82 help="Optional list of directories to ignore, specified "
83 "relative to the root of the repo. 'pub get' will "
84 "not be run for any subdirectories of these "
85 "directories.")
86 parser.add_argument("--upgrade",
87 action="store_true",
88 default=False,
89 help="Upgrade pub package dependencies")
90 args = parser.parse_args()
91 _current_path = os.path.dirname(os.path.realpath(__file__))
92 _repository_root = os.path.join(_current_path, args.repository_root)
93 _dart_sdk_path = os.path.join(_current_path, args.dart_sdk_directory)
94 sys.exit(
95 main(_repository_root, _dart_sdk_path, args.dirs_to_ignore, args.upgrade))
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698