bazel: bower support

* npm_binary (download tarball packaged npm apps)

* bower_archive (download a zip file, to be put in WORKSPACE)

* bower_component (defining a bower library, with dependency )

* bower_component_bundle (zipping up libraries together)

* js_component (insert plain js file into bower component bundle)

* bower2bazel.py: run bower to find dependencies, generate a .bzl to
  define archives and define components

Tested:

 python tools/js/bower2bazel.py -w lib/js/bower_archives.bzl -b \
    lib/js/bower_components.bzl

 bazel build polygerrit-ui:components
 unzip -v bazel-bin/polygerrit-ui/components.zip > /tmp/baz

 buck build polygerrit-ui:polygerrit_components
 unzip -v buck-out/gen/polygerrit-ui/polygerrit_components/polygerrit_components.bower_components.zip > /tmp/buck

 diff /tmp/buck /tmp/baz

The diff corresponds to newer file versions pinned through bower2bazel.

Change-Id: I4f33914d4853bcf8afe78b4719d0e0e83b139031
This commit is contained in:
Han-Wen Nienhuys
2016-09-21 15:03:54 +02:00
parent 8178e0e3f2
commit 28e7a6d3fe
19 changed files with 1009 additions and 85 deletions

View File

@@ -1,3 +1,5 @@
workspace(name="gerrit")
ANTLR_VERS = '3.5.2'
maven_jar(
@@ -954,3 +956,90 @@ maven_jar(
artifact = 'org.apache.httpcomponents:httpcore-niossl:4.0-alpha6',
sha1 = '9c662e7247ca8ceb1de5de629f685c9ef3e4ab58',
)
load("//tools/bzl:js.bzl", "npm_binary", "bower_archive")
npm_binary(
name = "bower",
)
# bower_archive() seed components.
bower_archive(
name = 'iron-autogrow-textarea',
package = 'polymerelements/iron-autogrow-textarea',
version = '1.0.12',
sha1 = 'b9b6874c9a2b5be435557a827ff8bd6661672ee3',
)
bower_archive(
name = 'es6-promise',
package = 'stefanpenner/es6-promise',
version = '3.3.0',
sha1 = 'a3a797bb22132f1ef75f9a2556173f81870c2e53',
)
bower_archive(
name = 'fetch',
package = 'fetch',
version = '1.0.0',
sha1 = '1b05a2bb40c73232c2909dc196de7519fe4db7a9',
)
bower_archive(
name = 'iron-dropdown',
package = 'polymerelements/iron-dropdown',
version = '1.4.0',
sha1 = '63e3d669a09edaa31c4f05afc76b53b919ef0595',
)
bower_archive(
name = 'iron-input',
package = 'polymerelements/iron-input',
version = '1.0.10',
sha1 = '9bc0c8e81de2527125383cbcf74dd9f27e7fa9ac',
)
bower_archive(
name = 'iron-overlay-behavior',
package = 'polymerelements/iron-overlay-behavior',
version = '1.7.6',
sha1 = '83181085fda59446ce74fd0d5ca30c223f38ee4a',
)
bower_archive(
name = 'iron-selector',
package = 'polymerelements/iron-selector',
version = '1.5.2',
sha1 = 'c57235dfda7fbb987c20ad0e97aac70babf1a1bf',
)
bower_archive(
name = 'moment',
package = 'moment/moment',
version = '2.13.0',
sha1 = 'fc8ce2c799bab21f6ced7aff928244f4ca8880aa',
)
bower_archive(
name = 'page',
package = 'visionmedia/page.js',
version = '1.7.1',
sha1 = '51a05428dd4f68fae1df5f12d0e2b61ba67f7757',
)
bower_archive(
name = 'polymer',
package = 'polymer/polymer',
version = '1.4.0',
sha1 = 'b84725939ead7c7bdf9917b065f68ef8dc790d06',
)
bower_archive(
name = 'promise-polyfill',
package = 'polymerlabs/promise-polyfill',
version = '1.0.0',
sha1 = 'a3b598c06cbd7f441402e666ff748326030905d6',
)
# Bower component transitive dependencies.
load("//lib/js:bower_archives.bzl", "load_bower_archives")
load_bower_archives()