Merge "Upgrade polygerrit_plugin rule"
This commit is contained in:
commit
39dc9ab6af
@ -1 +1 @@
|
|||||||
Subproject commit 53dccff17c029459999ff70ac886b80626af634b
|
Subproject commit 318504d0eb74f2f9c2967e9865ace6d5b57638c6
|
25
polygerrit-ui/externs/BUILD
Normal file
25
polygerrit-ui/externs/BUILD
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
# Copyright (C) 2018 The Android Open Source Project
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
package(
|
||||||
|
default_visibility = ["//visibility:public"],
|
||||||
|
)
|
||||||
|
|
||||||
|
load("@io_bazel_rules_closure//closure:defs.bzl", "closure_js_library")
|
||||||
|
|
||||||
|
closure_js_library(
|
||||||
|
name = "plugin",
|
||||||
|
srcs = ["plugin.js"],
|
||||||
|
no_closure_library = True,
|
||||||
|
)
|
28
polygerrit-ui/externs/plugin.js
Normal file
28
polygerrit-ui/externs/plugin.js
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
/**
|
||||||
|
* @license
|
||||||
|
* Copyright (C) 2018 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @fileoverview Closure compiler externs for the Gerrit UI plugins.
|
||||||
|
* @externs
|
||||||
|
*/
|
||||||
|
|
||||||
|
var Gerrit = {};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {!Function} callback
|
||||||
|
*/
|
||||||
|
Gerrit.install = function(callback) {};
|
102
tools/bzl/js.bzl
102
tools/bzl/js.bzl
@ -3,6 +3,7 @@ NPMJS = "NPMJS"
|
|||||||
GERRIT = "GERRIT:"
|
GERRIT = "GERRIT:"
|
||||||
|
|
||||||
load("//lib/js:npm.bzl", "NPM_SHA1S", "NPM_VERSIONS")
|
load("//lib/js:npm.bzl", "NPM_SHA1S", "NPM_VERSIONS")
|
||||||
|
load("@io_bazel_rules_closure//closure:defs.bzl", "closure_js_binary", "closure_js_library")
|
||||||
|
|
||||||
def _npm_tarball(name):
|
def _npm_tarball(name):
|
||||||
return "%s@%s.npm_binary.tgz" % (name, NPM_VERSIONS[name])
|
return "%s@%s.npm_binary.tgz" % (name, NPM_VERSIONS[name])
|
||||||
@ -146,9 +147,9 @@ def _bower_component_impl(ctx):
|
|||||||
transitive_versions += d.transitive_versions
|
transitive_versions += d.transitive_versions
|
||||||
|
|
||||||
return struct(
|
return struct(
|
||||||
transitive_zipfiles = transitive_zipfiles,
|
|
||||||
transitive_versions = transitive_versions,
|
|
||||||
transitive_licenses = transitive_licenses,
|
transitive_licenses = transitive_licenses,
|
||||||
|
transitive_versions = transitive_versions,
|
||||||
|
transitive_zipfiles = transitive_zipfiles,
|
||||||
)
|
)
|
||||||
|
|
||||||
_common_attrs = {
|
_common_attrs = {
|
||||||
@ -187,9 +188,9 @@ def _js_component(ctx):
|
|||||||
licenses += depset([ctx.file.license])
|
licenses += depset([ctx.file.license])
|
||||||
|
|
||||||
return struct(
|
return struct(
|
||||||
transitive_zipfiles = list([ctx.outputs.zip]),
|
|
||||||
transitive_versions = depset(),
|
|
||||||
transitive_licenses = licenses,
|
transitive_licenses = licenses,
|
||||||
|
transitive_versions = depset(),
|
||||||
|
transitive_zipfiles = list([ctx.outputs.zip]),
|
||||||
)
|
)
|
||||||
|
|
||||||
js_component = rule(
|
js_component = rule(
|
||||||
@ -271,9 +272,9 @@ def _bower_component_bundle_impl(ctx):
|
|||||||
)
|
)
|
||||||
|
|
||||||
return struct(
|
return struct(
|
||||||
transitive_zipfiles = zips,
|
|
||||||
transitive_versions = versions,
|
|
||||||
transitive_licenses = licenses,
|
transitive_licenses = licenses,
|
||||||
|
transitive_versions = versions,
|
||||||
|
transitive_zipfiles = zips,
|
||||||
)
|
)
|
||||||
|
|
||||||
bower_component_bundle = rule(
|
bower_component_bundle = rule(
|
||||||
@ -341,8 +342,8 @@ def _vulcanize_impl(ctx):
|
|||||||
# from the environment, and it may be under $HOME, so we can't run
|
# from the environment, and it may be under $HOME, so we can't run
|
||||||
# in the sandbox.
|
# in the sandbox.
|
||||||
node_tweaks = dict(
|
node_tweaks = dict(
|
||||||
use_default_shell_env = True,
|
|
||||||
execution_requirements = {"local": "1"},
|
execution_requirements = {"local": "1"},
|
||||||
|
use_default_shell_env = True,
|
||||||
)
|
)
|
||||||
ctx.actions.run_shell(
|
ctx.actions.run_shell(
|
||||||
mnemonic = "Vulcanize",
|
mnemonic = "Vulcanize",
|
||||||
@ -427,6 +428,87 @@ def vulcanize(*args, **kwargs):
|
|||||||
"""Vulcanize runs vulcanize and (optionally) crisper on a set of sources."""
|
"""Vulcanize runs vulcanize and (optionally) crisper on a set of sources."""
|
||||||
_vulcanize_rule(*args, pkg = PACKAGE_NAME, **kwargs)
|
_vulcanize_rule(*args, pkg = PACKAGE_NAME, **kwargs)
|
||||||
|
|
||||||
def polygerrit_plugin(*args, **kwargs):
|
def polygerrit_plugin(name, app, srcs = [], assets = None, **kwargs):
|
||||||
"""Bundles plugin dependencies for deployment."""
|
"""Bundles plugin dependencies for deployment.
|
||||||
_vulcanize_rule(*args, pkg = PACKAGE_NAME, **kwargs)
|
|
||||||
|
This rule bundles all Polymer elements and JS dependencies into .html and .js files.
|
||||||
|
Run-time dependencies (e.g. JS libraries loaded after plugin starts) should be provided using "assets" property.
|
||||||
|
Output of this rule is a FileSet with "${name}_fs", with deploy artifacts in "plugins/${name}/static".
|
||||||
|
|
||||||
|
Args:
|
||||||
|
name: String, plugin name.
|
||||||
|
app: String, the main or root source file.
|
||||||
|
assets: Fileset, additional files to be used by plugin in runtime, exported to "plugins/${name}/static".
|
||||||
|
srcs: Source files required for combining.
|
||||||
|
"""
|
||||||
|
|
||||||
|
# Combines all .js and .html files into foo_combined.js and foo_combined.html
|
||||||
|
_vulcanize_rule(name = name + "_combined", app = app, srcs = srcs + [app], pkg = PACKAGE_NAME, **kwargs)
|
||||||
|
|
||||||
|
closure_js_binary(
|
||||||
|
name = name + "_bin",
|
||||||
|
compilation_level = "SIMPLE",
|
||||||
|
defs = [
|
||||||
|
"--polymer_version=1",
|
||||||
|
"--language_out=ECMASCRIPT6",
|
||||||
|
"--rewrite_polyfills=false",
|
||||||
|
],
|
||||||
|
deps = [
|
||||||
|
name + "_closure_lib",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
closure_js_library(
|
||||||
|
name = name + "_closure_lib",
|
||||||
|
srcs = [name + "_combined.js"],
|
||||||
|
convention = "GOOGLE",
|
||||||
|
no_closure_library = True,
|
||||||
|
deps = [
|
||||||
|
"//lib/polymer_externs:polymer_closure",
|
||||||
|
"//polygerrit-ui/externs:plugin",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
native.genrule(
|
||||||
|
name = name + "_rename_html",
|
||||||
|
srcs = [name + "_combined.html"],
|
||||||
|
outs = [name + ".html"],
|
||||||
|
cmd = "sed 's/<script src=\"" + name + "_combined.js\"/<script src=\"" + name + ".js\"/g' $(SRCS) > $(OUTS)",
|
||||||
|
output_to_bindir = True,
|
||||||
|
)
|
||||||
|
|
||||||
|
native.genrule(
|
||||||
|
name = name + "_rename_js",
|
||||||
|
srcs = [name + "_bin.js"],
|
||||||
|
outs = [name + ".js"],
|
||||||
|
cmd = "cp $< $@",
|
||||||
|
output_to_bindir = True,
|
||||||
|
)
|
||||||
|
|
||||||
|
static_files = [
|
||||||
|
name + ".js",
|
||||||
|
name + ".html",
|
||||||
|
]
|
||||||
|
|
||||||
|
if assets:
|
||||||
|
nested, direct = [], []
|
||||||
|
for x in assets:
|
||||||
|
target = nested if "/" in x else direct
|
||||||
|
target.append(x)
|
||||||
|
|
||||||
|
static_files += direct
|
||||||
|
|
||||||
|
if nested:
|
||||||
|
native.genrule(
|
||||||
|
name = name + "_copy_assets",
|
||||||
|
srcs = assets,
|
||||||
|
outs = [f.split("/")[-1] for f in nested],
|
||||||
|
cmd = "cp $(SRCS) $(@D)",
|
||||||
|
output_to_bindir = True,
|
||||||
|
)
|
||||||
|
static_files += [":" + name + "_copy_assets"]
|
||||||
|
|
||||||
|
native.filegroup(
|
||||||
|
name = name,
|
||||||
|
srcs = static_files,
|
||||||
|
)
|
||||||
|
Loading…
Reference in New Issue
Block a user