diff options
Diffstat (limited to 'tools/build_rules/closure/closure_js_binary.bzl')
-rw-r--r-- | tools/build_rules/closure/closure_js_binary.bzl | 124 |
1 files changed, 0 insertions, 124 deletions
diff --git a/tools/build_rules/closure/closure_js_binary.bzl b/tools/build_rules/closure/closure_js_binary.bzl deleted file mode 100644 index c4453ffb10..0000000000 --- a/tools/build_rules/closure/closure_js_binary.bzl +++ /dev/null @@ -1,124 +0,0 @@ -# Copyright 2015 The Bazel Authors. All Rights Reserved. -# -# 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. - -"""Build definitions for JavaScript binaries compiled with the Closure Compiler. - -A single file is produced with the _compiled.js suffix. - -By default, the name of the entry point is assumed to be the same as that of the -build target. This behaviour may be overridden with the "main" attribute. - -The optimization level may be set with the "compilation_level" attribute. -Supported values are: unobfuscated, simple, and advanced. - -Example: - - closure_js_binary( - name = "hello", - compilation_level = "simple", - language_in = "ecmascript6", - language_out = "ecmascript3", - externs = ["//third_party/javascript/google_cast/cast.js"], - deps = [ - "@closure_library//:closure_library", - ":hello_lib", - ], - ) - -This rule will produce hello_combined.js. -""" - -_COMPILATION_LEVELS = { - "whitespace_only": [ - "--compilation_level=WHITESPACE_ONLY", - "--formatting=PRETTY_PRINT" - ], - "simple": ["--compilation_level=SIMPLE"], - "advanced": ["--compilation_level=ADVANCED"] -} - -_SUPPORTED_LANGUAGES = { - "es3": ["ES3"], - "ecmascript3": ["ECMASCRIPT3"], - "es5": ["ES5"], - "ecmascript5": ["ECMASCRIPT5"], - "es5_strict": ["ES5_STRICT"], - "ecmascript5_strict": ["ECMASCRIPT5_STRICT"], - "es6": ["ES6"], - "ecmascript6": ["ECMASCRIPT6"], - "es6_strict": ["ES6_STRICT"], - "ecmascript6_strict": ["ECMASCRIPT6_STRICT"], - "es6_typed": ["ES6_TYPED"], - "ecmascript6_typed": ["ECMASCRIPT6_TYPED"], -} - -def _impl(ctx): - externs = set(order="compile") - srcs = set(order="compile") - for dep in ctx.attr.deps: - externs += dep.transitive_js_externs - srcs += dep.transitive_js_srcs - - args = [ - "--entry_point=goog:%s" % ctx.attr.main, - "--js_output_file=%s" % ctx.outputs.out.path, - "--dependency_mode=LOOSE", - "--warning_level=VERBOSE", - ] + (["--js=%s" % src.path for src in srcs] + - ["--externs=%s" % extern.path for extern in externs]) - - # Set the compilation level. - if ctx.attr.compilation_level in _COMPILATION_LEVELS: - args += _COMPILATION_LEVELS[ctx.attr.compilation_level] - else: - fail("Invalid compilation_level '%s', expected one of %s" % - (ctx.attr.compilation_level, _COMPILATION_LEVELS.keys())) - - # Set the language in. - if ctx.attr.language_in in _SUPPORTED_LANGUAGES: - args += "--language_in=" + _SUPPORTED_LANGUAGES[ctx.attr.language_in] - else: - fail("Invalid language_in '%s', expected one of %s" % - (ctx.attr.language_in, _SUPPORTED_LANGUAGES.keys())) - - # Set the language out. - if ctx.attr.language_out in _SUPPORTED_LANGUAGES: - args += "--language_out=" + _SUPPORTED_LANGUAGES[ctx.attr.language_out] - else: - fail("Invalid language_out '%s', expected one of %s" % - (ctx.attr.language_out, _SUPPORTED_LANGUAGES.keys())) - - ctx.action( - inputs=list(srcs) + list(externs), - outputs=[ctx.outputs.out], - arguments=args, - executable=ctx.executable._closure_compiler) - - return struct(files=set([ctx.outputs.out])) - -closure_js_binary = rule( - implementation=_impl, - attrs={ - "deps": attr.label_list( - allow_files=False, - providers=["transitive_js_externs", "transitive_js_srcs"]), - "main": attr.string(default="%{name}"), - "compilation_level": attr.string(default="advanced"), - "language_in": attr.string(default="ecmascript6"), - "language_out": attr.string(default="ecmascript3"), - "_closure_compiler": attr.label( - default=Label("//external:closure_compiler_"), - executable=True), - }, - outputs={"out": "%{name}_combined.js"}) |