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/bzl/js.bzl b/tools/bzl/js.bzl
index 1aa9d5b..af51af8 100644
--- a/tools/bzl/js.bzl
+++ b/tools/bzl/js.bzl
@@ -268,6 +268,15 @@
         "version_json": "%{name}-versions.json",
     },
 )
+"""Groups a set of bower components together in a zip file.
+
+Outputs:
+  NAME-versions.json:
+    a JSON file containing a PKG-NAME => PKG-NAME#VERSION mapping for the
+    transitive dependencies.
+  NAME.zip:
+    a zip file containing the transitive dependencies for this bundle.
+"""
 
 def _vulcanize_impl(ctx):
   # intermediate artifact.
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"])