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:
@@ -70,34 +70,3 @@ def hash_file(hash_obj, path):
|
||||
break
|
||||
hash_obj.update(b)
|
||||
return hash_obj
|
||||
|
||||
|
||||
def hash_bower_component(hash_obj, path):
|
||||
"""Hash the contents of a bower component directory.
|
||||
|
||||
This is a stable hash of a directory downloaded with `bower install`, minus
|
||||
the .bower.json file, which is autogenerated each time by bower. Used in lieu
|
||||
of hashing a zipfile of the contents, since zipfiles are difficult to hash in
|
||||
a stable manner.
|
||||
|
||||
Args:
|
||||
hash_obj: an open hash object, e.g. hashlib.sha1().
|
||||
path: path to the directory to hash.
|
||||
|
||||
Returns:
|
||||
The passed-in hash_obj.
|
||||
"""
|
||||
if not os.path.isdir(path):
|
||||
raise ValueError('Not a directory: %s' % path)
|
||||
|
||||
path = os.path.abspath(path)
|
||||
for root, dirs, files in os.walk(path):
|
||||
dirs.sort()
|
||||
for f in sorted(files):
|
||||
if f == '.bower.json':
|
||||
continue
|
||||
p = os.path.join(root, f)
|
||||
hash_obj.update(p[len(path)+1:])
|
||||
hash_file(hash_obj, p)
|
||||
|
||||
return hash_obj
|
||||
|
||||
Reference in New Issue
Block a user