bower2bazel: don't specify versions for non-seed packages.
The 'seed' packages are the ones whose versions are set by us in
WORKSPACE. We should not set the versions for the rest of the packages
in the bower input JSON, so bower can suggest the right versions to
use.
Change-Id: I9b75f16655d049e2064726862980a339c91dd534
diff --git a/tools/js/bower2bazel.py b/tools/js/bower2bazel.py
index e62dbbe..d12129e 100755
--- a/tools/js/bower2bazel.py
+++ b/tools/js/bower2bazel.py
@@ -59,15 +59,22 @@
}
-def build_bower_json(version_targets):
- """Generate bower JSON file, return its path."""
+def build_bower_json(version_targets, seeds):
+ """Generate bower JSON file, return its path.
+
+ Args:
+ version_targets: bazel target names of the versions.json file.
+ seeds: an iterable of bower package names of the seed packages, ie.
+ the packages whose versions we control manually.
+ """
bower_json = collections.OrderedDict()
- bower_json['name'] = 'bower2buck-output'
+ bower_json['name'] = 'bower2bazel-output'
bower_json['version'] = '0.0.0'
bower_json['description'] = 'Auto-generated bower.json for dependency management'
bower_json['private'] = True
bower_json['dependencies'] = {}
+ seeds = set(seeds)
for v in version_targets:
fn = os.path.join("bazel-out/local-fastbuild/bin", v.lstrip("/").replace(":", "/"))
with open(fn) as f:
@@ -75,7 +82,13 @@
if "" in j:
# drop dummy entries.
del j[""]
- bower_json['dependencies'].update(j)
+
+ trimmed = {}
+ for k, v in j.items():
+ if k in seeds:
+ trimmed[k] = v
+
+ bower_json['dependencies'].update(trimmed)
tmpdir = tempfile.mkdtemp()
ret = os.path.join(tmpdir, 'bower.json')
@@ -110,9 +123,8 @@
seeds = set([s[len(prefix):] for s in seeds])
version_targets = [t + "-versions.json" for t in targets]
-
subprocess.check_call(['bazel', 'build'] + version_targets)
- bower_json_path = build_bower_json(version_targets)
+ bower_json_path = build_bower_json(version_targets, seeds)
dir = os.path.dirname(bower_json_path)
cmd = bower_command(["install"])