mirror of
https://github.com/google/nomulus.git
synced 2025-07-10 21:23:22 +02:00
Remove old Bazel files (#151)
This commit is contained in:
parent
82fa3d7349
commit
32d5940be3
5 changed files with 0 additions and 845 deletions
|
@ -1,60 +0,0 @@
|
|||
# Copyright 2017 The Nomulus 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.
|
||||
|
||||
"""Common routines for Nomulus build rules."""
|
||||
|
||||
ZIPPER = "@bazel_tools//tools/zip:zipper"
|
||||
|
||||
def long_path(ctx, file_):
|
||||
"""Constructs canonical runfile path relative to TEST_SRCDIR.
|
||||
|
||||
Args:
|
||||
ctx: A Skylark rule context.
|
||||
file_: A File object that should appear in the runfiles for the test.
|
||||
|
||||
Returns:
|
||||
A string path relative to TEST_SRCDIR suitable for use in tests and
|
||||
testing infrastructure.
|
||||
"""
|
||||
if file_.short_path.startswith("../"):
|
||||
return file_.short_path[3:]
|
||||
if file_.owner and file_.owner.workspace_root:
|
||||
return file_.owner.workspace_root + "/" + file_.short_path
|
||||
return ctx.workspace_name + "/" + file_.short_path
|
||||
|
||||
def collect_runfiles(targets):
|
||||
"""Aggregates runfiles from targets.
|
||||
|
||||
Args:
|
||||
targets: A list of Bazel targets.
|
||||
|
||||
Returns:
|
||||
A list of Bazel files.
|
||||
"""
|
||||
data = depset()
|
||||
for target in targets:
|
||||
if hasattr(target, "runfiles"):
|
||||
data += target.runfiles.files
|
||||
continue
|
||||
if hasattr(target, "data_runfiles"):
|
||||
data += target.data_runfiles.files
|
||||
if hasattr(target, "default_runfiles"):
|
||||
data += target.default_runfiles.files
|
||||
return data
|
||||
|
||||
def _get_runfiles(target, attribute):
|
||||
runfiles = getattr(target, attribute, None)
|
||||
if runfiles:
|
||||
return runfiles.files
|
||||
return []
|
|
@ -1,53 +0,0 @@
|
|||
# Copyright 2017 The Nomulus 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 macro for creating App Engine EAR archives for Nomulus."""
|
||||
|
||||
load("//java/google/registry/builddefs:defs.bzl", "ZIPPER")
|
||||
|
||||
def registry_ear_file(name, out, configs, wars, **kwargs):
|
||||
"""Creates an EAR archive by combining WAR archives."""
|
||||
cmd = [
|
||||
"set -e",
|
||||
"repo=$$(pwd)",
|
||||
"zipper=$$repo/$(location %s)" % ZIPPER,
|
||||
"tmp=$$(mktemp -d $${TMPDIR:-/tmp}/registry_ear_file.XXXXXXXXXX)",
|
||||
"cd $${tmp}",
|
||||
]
|
||||
for target, dest in configs.items():
|
||||
cmd += [
|
||||
"mkdir -p $${tmp}/$$(dirname %s)" % dest,
|
||||
"ln -s $${repo}/$(location %s) $${tmp}/%s" % (target, dest),
|
||||
]
|
||||
for target, dest in wars.items():
|
||||
cmd += [
|
||||
"mkdir " + dest,
|
||||
"cd " + dest,
|
||||
"$${zipper} x $${repo}/$(location %s)" % target,
|
||||
"cd ..",
|
||||
]
|
||||
cmd += [
|
||||
"$${zipper} cC $${repo}/$@ $$(find . | sed 1d | cut -c 3- | LC_ALL=C sort)",
|
||||
"cd $${repo}",
|
||||
"rm -rf $${tmp}",
|
||||
]
|
||||
native.genrule(
|
||||
name = name,
|
||||
srcs = configs.keys() + wars.keys(),
|
||||
outs = [out],
|
||||
cmd = "\n".join(cmd),
|
||||
tools = [ZIPPER],
|
||||
message = "Generating EAR archive",
|
||||
**kwargs
|
||||
)
|
|
@ -1,256 +0,0 @@
|
|||
# Copyright 2017 The Nomulus 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.
|
||||
|
||||
"""Zip file creator that allows arbitrary path renaming.
|
||||
|
||||
This rule takes two main inputs: a bunch of filesets and a dictionary of
|
||||
hard-coded source to dest mappings. It then applies those mappings to the input
|
||||
file paths, to create a zip file with the same name as the rule.
|
||||
|
||||
The following preconditions must be met:
|
||||
|
||||
- Sources and destinations can't begin or end with slash.
|
||||
- Every file must be matched by a mapping.
|
||||
- Every mapping must match something.
|
||||
|
||||
The source can either be an exact match or a prefix.
|
||||
|
||||
- If a match is exact, the destination replaces the entire path. If the
|
||||
destination path is empty, then the path remains the same.
|
||||
|
||||
- If the match is a prefix, then the destination replaces the source prefix in
|
||||
the path. If the destination is empty, then the source prefix is removed.
|
||||
|
||||
- If source is an empty string, it matches everything. In this case,
|
||||
destination becomes the path prefix.
|
||||
|
||||
Prefixes are matched with component granularity, not characters. Mappings with
|
||||
more components take precedence. Mappings with equal components are sorted
|
||||
asciibetically.
|
||||
|
||||
Mappings apply to the "long path" of a file, i.e. relative to TEST_SRCDIR,
|
||||
e.g. workspace_name/pkg/file. Long paths do not take into consideration
|
||||
bazel-foo/ output directories.
|
||||
|
||||
The deps attribute allows zip_file() rules to depend on other zip_file() rules.
|
||||
In such cases, the contents of directly dependent zip files are unzipped and
|
||||
then re-zipped. Mappings specified by the current rule do not apply to the
|
||||
files extracted from dependent zips. However those files can be overridden.
|
||||
|
||||
The simplest example of this rule, which simply zips up short paths, is as
|
||||
follows:
|
||||
|
||||
# //my/package/BUILD
|
||||
zip_file(
|
||||
name = "doodle",
|
||||
srcs = ["hello.txt"],
|
||||
mappings = {"": ""},
|
||||
)
|
||||
|
||||
The rule above would create a zip file name //my/package/doodle.zip which would
|
||||
contain a single file named "my/package/hello.txt".
|
||||
|
||||
If we wanted to strip the package path, we could do the following:
|
||||
|
||||
# //my/package/BUILD
|
||||
zip_file(
|
||||
name = "doodle",
|
||||
srcs = ["hello.txt"],
|
||||
mappings = {"my/package": ""},
|
||||
)
|
||||
|
||||
In this case, doodle.zip would contain a single file: "hello.txt".
|
||||
|
||||
If we wanted to rename hello.txt, we could do the following:
|
||||
|
||||
# //my/package/BUILD
|
||||
zip_file(
|
||||
name = "doodle",
|
||||
srcs = ["hello.txt"],
|
||||
mappings = {"my/package/hello.txt": "my/package/world.txt"},
|
||||
)
|
||||
|
||||
A zip file can be assembled across many rules. For example:
|
||||
|
||||
# //webapp/html/BUILD
|
||||
zip_file(
|
||||
name = "assets",
|
||||
srcs = glob(["*.html"]),
|
||||
mappings = {"webapp/html": ""},
|
||||
)
|
||||
|
||||
# //webapp/js/BUILD
|
||||
zip_file(
|
||||
name = "assets",
|
||||
srcs = glob(["*.js"]),
|
||||
mappings = {"webapp/js": "assets/js"},
|
||||
)
|
||||
|
||||
# //webapp/BUILD
|
||||
zip_file(
|
||||
name = "war",
|
||||
deps = [
|
||||
"//webapp/html:assets",
|
||||
"//webapp/js:assets",
|
||||
],
|
||||
mappings = {"webapp/html": ""},
|
||||
)
|
||||
|
||||
You can exclude files with the "exclude" attribute:
|
||||
|
||||
# //webapp/BUILD
|
||||
zip_file(
|
||||
name = "war_without_tears",
|
||||
deps = ["war"],
|
||||
exclude = ["assets/js/tears.js"],
|
||||
)
|
||||
|
||||
Note that "exclude" excludes based on the mapped path relative to the root of
|
||||
the zipfile. If the file doesn't exist, you'll get an error.
|
||||
|
||||
"""
|
||||
|
||||
load(
|
||||
"//java/google/registry/builddefs:defs.bzl",
|
||||
"ZIPPER",
|
||||
"collect_runfiles",
|
||||
"long_path",
|
||||
)
|
||||
|
||||
def _zip_file(ctx):
|
||||
"""Implementation of zip_file() rule."""
|
||||
for s, d in ctx.attr.mappings.items():
|
||||
if (s.startswith("/") or s.endswith("/") or
|
||||
d.startswith("/") or d.endswith("/")):
|
||||
fail("mappings should not begin or end with slash")
|
||||
srcs = depset()
|
||||
srcs += ctx.files.srcs
|
||||
srcs += ctx.files.data
|
||||
srcs += collect_runfiles(ctx.attr.data)
|
||||
mapped = _map_sources(ctx, srcs, ctx.attr.mappings)
|
||||
cmd = [
|
||||
"#!/bin/sh",
|
||||
"set -e",
|
||||
'repo="$(pwd)"',
|
||||
'zipper="${repo}/%s"' % ctx.file._zipper.path,
|
||||
'archive="${repo}/%s"' % ctx.outputs.out.path,
|
||||
'tmp="$(mktemp -d "${TMPDIR:-/tmp}/zip_file.XXXXXXXXXX")"',
|
||||
'cd "${tmp}"',
|
||||
]
|
||||
cmd += [
|
||||
'"${zipper}" x "${repo}/%s"' % dep.zip_file.path
|
||||
for dep in ctx.attr.deps
|
||||
]
|
||||
cmd += ["rm %s" % filename for filename in ctx.attr.exclude]
|
||||
cmd += [
|
||||
'mkdir -p "${tmp}/%s"' % zip_path
|
||||
for zip_path in depset(
|
||||
[
|
||||
zip_path[:zip_path.rindex("/")]
|
||||
for _, zip_path in mapped
|
||||
if "/" in zip_path
|
||||
],
|
||||
).to_list()
|
||||
]
|
||||
cmd += [
|
||||
'ln -sf "${repo}/%s" "${tmp}/%s"' % (path, zip_path)
|
||||
for path, zip_path in mapped
|
||||
]
|
||||
cmd += [
|
||||
("find . | sed 1d | cut -c 3- | LC_ALL=C sort" +
|
||||
' | xargs "${zipper}" cC "${archive}"'),
|
||||
'cd "${repo}"',
|
||||
'rm -rf "${tmp}"',
|
||||
]
|
||||
if hasattr(ctx, "bin_dir"):
|
||||
script = ctx.new_file(ctx.bin_dir, "%s.sh" % ctx.label.name)
|
||||
else:
|
||||
# TODO(kchodorow): remove this once Bazel 4.0+ is required.
|
||||
script = ctx.new_file(ctx.configuration.bin_dir, "%s.sh" % ctx.label.name)
|
||||
ctx.actions.write(output = script, content = "\n".join(cmd), is_executable = True)
|
||||
inputs = [ctx.file._zipper]
|
||||
inputs += [dep.zip_file for dep in ctx.attr.deps]
|
||||
inputs += srcs.to_list()
|
||||
ctx.actions.run(
|
||||
inputs = inputs,
|
||||
outputs = [ctx.outputs.out],
|
||||
executable = script,
|
||||
mnemonic = "zip",
|
||||
progress_message = "Creating zip with %d inputs %s" % (
|
||||
len(inputs),
|
||||
ctx.label,
|
||||
),
|
||||
)
|
||||
return struct(files = depset([ctx.outputs.out]), zip_file = ctx.outputs.out)
|
||||
|
||||
def _map_sources(ctx, srcs, mappings):
|
||||
"""Calculates paths in zip file for srcs."""
|
||||
|
||||
# order mappings with more path components first
|
||||
mappings = sorted([
|
||||
(-len(source.split("/")), source, dest)
|
||||
for source, dest in mappings.items()
|
||||
])
|
||||
|
||||
# get rid of the integer part of tuple used for sorting
|
||||
mappings = [(source, dest) for _, source, dest in mappings]
|
||||
mappings_indexes = range(len(mappings))
|
||||
used = {i: False for i in mappings_indexes}
|
||||
mapped = []
|
||||
for file_ in srcs:
|
||||
run_path = long_path(ctx, file_)
|
||||
zip_path = None
|
||||
for i in mappings_indexes:
|
||||
source = mappings[i][0]
|
||||
dest = mappings[i][1]
|
||||
if not source:
|
||||
if dest:
|
||||
zip_path = dest + "/" + run_path
|
||||
else:
|
||||
zip_path = run_path
|
||||
elif source == run_path:
|
||||
if dest:
|
||||
zip_path = dest
|
||||
else:
|
||||
zip_path = run_path
|
||||
elif run_path.startswith(source + "/"):
|
||||
if dest:
|
||||
zip_path = dest + run_path[len(source):]
|
||||
else:
|
||||
zip_path = run_path[len(source) + 1:]
|
||||
else:
|
||||
continue
|
||||
used[i] = True
|
||||
break
|
||||
if not zip_path:
|
||||
fail("no mapping matched: " + run_path)
|
||||
mapped += [(file_.path, zip_path)]
|
||||
for i in mappings_indexes:
|
||||
if not used[i]:
|
||||
fail('superfluous mapping: "%s" -> "%s"' % mappings[i])
|
||||
return mapped
|
||||
|
||||
zip_file = rule(
|
||||
implementation = _zip_file,
|
||||
output_to_genfiles = True,
|
||||
attrs = {
|
||||
"out": attr.output(mandatory = True),
|
||||
"srcs": attr.label_list(allow_files = True),
|
||||
"data": attr.label_list(allow_files = True),
|
||||
"deps": attr.label_list(providers = ["zip_file"]),
|
||||
"exclude": attr.string_list(),
|
||||
"mappings": attr.string_dict(),
|
||||
"_zipper": attr.label(default = Label(ZIPPER), allow_single_file = True),
|
||||
},
|
||||
)
|
|
@ -1,410 +0,0 @@
|
|||
# Copyright 2017 The Nomulus 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.
|
||||
|
||||
#
|
||||
# .'``'. ...
|
||||
# :o o `....'` ;
|
||||
# `. O :'
|
||||
# `': `.
|
||||
# `:. `.
|
||||
# : `. `.
|
||||
# `..'`... `.
|
||||
# `... `.
|
||||
# DO NOT EDIT ``... `.
|
||||
# THIS FILE `````.
|
||||
#
|
||||
# When you make changes to the XML schemas (*.xsd) or the JAXB bindings file
|
||||
# (bindings.xjb), you must regenerate this file with the following commands:
|
||||
#
|
||||
# bazel run java/google/registry/xjc:list_generated_files | tee /tmp/lol
|
||||
# mv /tmp/lol java/google/registry/xjc/generated_files.bzl
|
||||
#
|
||||
|
||||
pkginfo_generated_files = [
|
||||
"contact/package-info.java",
|
||||
"domain/package-info.java",
|
||||
"dsig/package-info.java",
|
||||
"epp/package-info.java",
|
||||
"eppcom/package-info.java",
|
||||
"fee06/package-info.java",
|
||||
"fee11/package-info.java",
|
||||
"fee12/package-info.java",
|
||||
"host/package-info.java",
|
||||
"iirdea/package-info.java",
|
||||
"launch/package-info.java",
|
||||
"mark/package-info.java",
|
||||
"rde/package-info.java",
|
||||
"rdecontact/package-info.java",
|
||||
"rdedomain/package-info.java",
|
||||
"rdeeppparams/package-info.java",
|
||||
"rdeheader/package-info.java",
|
||||
"rdehost/package-info.java",
|
||||
"rdeidn/package-info.java",
|
||||
"rdenndn/package-info.java",
|
||||
"rdenotification/package-info.java",
|
||||
"rdepolicy/package-info.java",
|
||||
"rderegistrar/package-info.java",
|
||||
"rdereport/package-info.java",
|
||||
"rgp/package-info.java",
|
||||
"secdns/package-info.java",
|
||||
"smd/package-info.java",
|
||||
]
|
||||
|
||||
xjc_generated_files = [
|
||||
"contact/ObjectFactory.java",
|
||||
"contact/XjcContactAddRemType.java",
|
||||
"contact/XjcContactAddrType.java",
|
||||
"contact/XjcContactAuthIDType.java",
|
||||
"contact/XjcContactAuthInfoType.java",
|
||||
"contact/XjcContactCheck.java",
|
||||
"contact/XjcContactCheckIDType.java",
|
||||
"contact/XjcContactCheckType.java",
|
||||
"contact/XjcContactChgPostalInfoType.java",
|
||||
"contact/XjcContactChgType.java",
|
||||
"contact/XjcContactChkData.java",
|
||||
"contact/XjcContactCreData.java",
|
||||
"contact/XjcContactCreate.java",
|
||||
"contact/XjcContactDelete.java",
|
||||
"contact/XjcContactDiscloseType.java",
|
||||
"contact/XjcContactE164Type.java",
|
||||
"contact/XjcContactInfData.java",
|
||||
"contact/XjcContactInfo.java",
|
||||
"contact/XjcContactIntLocType.java",
|
||||
"contact/XjcContactPaCLIDType.java",
|
||||
"contact/XjcContactPanData.java",
|
||||
"contact/XjcContactPostalInfoEnumType.java",
|
||||
"contact/XjcContactPostalInfoType.java",
|
||||
"contact/XjcContactStatusType.java",
|
||||
"contact/XjcContactStatusValueType.java",
|
||||
"contact/XjcContactTransfer.java",
|
||||
"contact/XjcContactTrnData.java",
|
||||
"contact/XjcContactUpdate.java",
|
||||
"domain/ObjectFactory.java",
|
||||
"domain/XjcDomainAddRemType.java",
|
||||
"domain/XjcDomainAuthInfoChgType.java",
|
||||
"domain/XjcDomainAuthInfoType.java",
|
||||
"domain/XjcDomainCheck.java",
|
||||
"domain/XjcDomainCheckNameType.java",
|
||||
"domain/XjcDomainCheckType.java",
|
||||
"domain/XjcDomainChgType.java",
|
||||
"domain/XjcDomainChkData.java",
|
||||
"domain/XjcDomainContactAttrType.java",
|
||||
"domain/XjcDomainContactType.java",
|
||||
"domain/XjcDomainCreData.java",
|
||||
"domain/XjcDomainCreate.java",
|
||||
"domain/XjcDomainDelete.java",
|
||||
"domain/XjcDomainHostAttrType.java",
|
||||
"domain/XjcDomainHostsType.java",
|
||||
"domain/XjcDomainInfData.java",
|
||||
"domain/XjcDomainInfo.java",
|
||||
"domain/XjcDomainInfoNameType.java",
|
||||
"domain/XjcDomainNsType.java",
|
||||
"domain/XjcDomainPUnitType.java",
|
||||
"domain/XjcDomainPaNameType.java",
|
||||
"domain/XjcDomainPanData.java",
|
||||
"domain/XjcDomainPeriodType.java",
|
||||
"domain/XjcDomainRenData.java",
|
||||
"domain/XjcDomainRenew.java",
|
||||
"domain/XjcDomainStatusType.java",
|
||||
"domain/XjcDomainStatusValueType.java",
|
||||
"domain/XjcDomainTransfer.java",
|
||||
"domain/XjcDomainTrnData.java",
|
||||
"domain/XjcDomainUpdate.java",
|
||||
"dsig/ObjectFactory.java",
|
||||
"dsig/XjcDsigCanonicalizationMethod.java",
|
||||
"dsig/XjcDsigDSAKeyValue.java",
|
||||
"dsig/XjcDsigDigestMethod.java",
|
||||
"dsig/XjcDsigDigestValue.java",
|
||||
"dsig/XjcDsigKeyInfo.java",
|
||||
"dsig/XjcDsigKeyName.java",
|
||||
"dsig/XjcDsigKeyValue.java",
|
||||
"dsig/XjcDsigManifest.java",
|
||||
"dsig/XjcDsigMgmtData.java",
|
||||
"dsig/XjcDsigObject.java",
|
||||
"dsig/XjcDsigPGPData.java",
|
||||
"dsig/XjcDsigRSAKeyValue.java",
|
||||
"dsig/XjcDsigReference.java",
|
||||
"dsig/XjcDsigRetrievalMethod.java",
|
||||
"dsig/XjcDsigSPKIData.java",
|
||||
"dsig/XjcDsigSignature.java",
|
||||
"dsig/XjcDsigSignatureMethod.java",
|
||||
"dsig/XjcDsigSignatureProperties.java",
|
||||
"dsig/XjcDsigSignatureProperty.java",
|
||||
"dsig/XjcDsigSignatureValue.java",
|
||||
"dsig/XjcDsigSignedInfo.java",
|
||||
"dsig/XjcDsigTransform.java",
|
||||
"dsig/XjcDsigTransforms.java",
|
||||
"dsig/XjcDsigX509Data.java",
|
||||
"dsig/XjcDsigX509IssuerSerialType.java",
|
||||
"epp/ObjectFactory.java",
|
||||
"epp/XjcEpp.java",
|
||||
"epp/XjcEppCommandType.java",
|
||||
"epp/XjcEppCredsOptionsType.java",
|
||||
"epp/XjcEppDcpAccessType.java",
|
||||
"epp/XjcEppDcpExpiryType.java",
|
||||
"epp/XjcEppDcpOursType.java",
|
||||
"epp/XjcEppDcpPurposeType.java",
|
||||
"epp/XjcEppDcpRecipientType.java",
|
||||
"epp/XjcEppDcpRetentionType.java",
|
||||
"epp/XjcEppDcpStatementType.java",
|
||||
"epp/XjcEppDcpType.java",
|
||||
"epp/XjcEppElement.java",
|
||||
"epp/XjcEppErrValueType.java",
|
||||
"epp/XjcEppExtAnyType.java",
|
||||
"epp/XjcEppExtErrValueType.java",
|
||||
"epp/XjcEppExtURIType.java",
|
||||
"epp/XjcEppGreetingType.java",
|
||||
"epp/XjcEppLoginSvcType.java",
|
||||
"epp/XjcEppLoginType.java",
|
||||
"epp/XjcEppMixedMsgType.java",
|
||||
"epp/XjcEppMsgQType.java",
|
||||
"epp/XjcEppMsgType.java",
|
||||
"epp/XjcEppPollOpType.java",
|
||||
"epp/XjcEppPollType.java",
|
||||
"epp/XjcEppReadWriteType.java",
|
||||
"epp/XjcEppResponse.java",
|
||||
"epp/XjcEppResultType.java",
|
||||
"epp/XjcEppSvcMenuType.java",
|
||||
"epp/XjcEppTrIDType.java",
|
||||
"epp/XjcEppTransferOpType.java",
|
||||
"epp/XjcEppTransferType.java",
|
||||
"eppcom/ObjectFactory.java",
|
||||
"eppcom/XjcEppcomExtAuthInfoType.java",
|
||||
"eppcom/XjcEppcomPwAuthInfoType.java",
|
||||
"eppcom/XjcEppcomReasonType.java",
|
||||
"eppcom/XjcEppcomTrStatusType.java",
|
||||
"fee06/ObjectFactory.java",
|
||||
"fee06/XjcFee06Check.java",
|
||||
"fee06/XjcFee06ChkData.java",
|
||||
"fee06/XjcFee06CommandType.java",
|
||||
"fee06/XjcFee06CreData.java",
|
||||
"fee06/XjcFee06Create.java",
|
||||
"fee06/XjcFee06CreditType.java",
|
||||
"fee06/XjcFee06DelData.java",
|
||||
"fee06/XjcFee06DomainCDType.java",
|
||||
"fee06/XjcFee06DomainCheckType.java",
|
||||
"fee06/XjcFee06FeeType.java",
|
||||
"fee06/XjcFee06InfData.java",
|
||||
"fee06/XjcFee06Info.java",
|
||||
"fee06/XjcFee06RenData.java",
|
||||
"fee06/XjcFee06Renew.java",
|
||||
"fee06/XjcFee06Transfer.java",
|
||||
"fee06/XjcFee06TransformCommandType.java",
|
||||
"fee06/XjcFee06TransformResultType.java",
|
||||
"fee06/XjcFee06TrnData.java",
|
||||
"fee06/XjcFee06UpdData.java",
|
||||
"fee06/XjcFee06Update.java",
|
||||
"fee11/ObjectFactory.java",
|
||||
"fee11/XjcFee11Check.java",
|
||||
"fee11/XjcFee11ChkData.java",
|
||||
"fee11/XjcFee11CommandType.java",
|
||||
"fee11/XjcFee11CreData.java",
|
||||
"fee11/XjcFee11Create.java",
|
||||
"fee11/XjcFee11CreditType.java",
|
||||
"fee11/XjcFee11DelData.java",
|
||||
"fee11/XjcFee11FeeType.java",
|
||||
"fee11/XjcFee11ObjectCDType.java",
|
||||
"fee11/XjcFee11RenData.java",
|
||||
"fee11/XjcFee11Renew.java",
|
||||
"fee11/XjcFee11Transfer.java",
|
||||
"fee11/XjcFee11TransformCommandType.java",
|
||||
"fee11/XjcFee11TransformResultType.java",
|
||||
"fee11/XjcFee11TrnData.java",
|
||||
"fee11/XjcFee11UpdData.java",
|
||||
"fee11/XjcFee11Update.java",
|
||||
"fee12/ObjectFactory.java",
|
||||
"fee12/XjcFee12Check.java",
|
||||
"fee12/XjcFee12ChkData.java",
|
||||
"fee12/XjcFee12CommandCDType.java",
|
||||
"fee12/XjcFee12CommandCheckType.java",
|
||||
"fee12/XjcFee12CreData.java",
|
||||
"fee12/XjcFee12Create.java",
|
||||
"fee12/XjcFee12CreditType.java",
|
||||
"fee12/XjcFee12DelData.java",
|
||||
"fee12/XjcFee12FeeType.java",
|
||||
"fee12/XjcFee12ObjectCDType.java",
|
||||
"fee12/XjcFee12RenData.java",
|
||||
"fee12/XjcFee12Renew.java",
|
||||
"fee12/XjcFee12Transfer.java",
|
||||
"fee12/XjcFee12TransformCommandType.java",
|
||||
"fee12/XjcFee12TransformResultType.java",
|
||||
"fee12/XjcFee12TrnData.java",
|
||||
"fee12/XjcFee12UpdData.java",
|
||||
"fee12/XjcFee12Update.java",
|
||||
"host/ObjectFactory.java",
|
||||
"host/XjcHostAddRemType.java",
|
||||
"host/XjcHostAddrType.java",
|
||||
"host/XjcHostCheck.java",
|
||||
"host/XjcHostCheckNameType.java",
|
||||
"host/XjcHostCheckType.java",
|
||||
"host/XjcHostChgType.java",
|
||||
"host/XjcHostChkData.java",
|
||||
"host/XjcHostCreData.java",
|
||||
"host/XjcHostCreate.java",
|
||||
"host/XjcHostDelete.java",
|
||||
"host/XjcHostInfData.java",
|
||||
"host/XjcHostInfo.java",
|
||||
"host/XjcHostIpType.java",
|
||||
"host/XjcHostPaNameType.java",
|
||||
"host/XjcHostPanData.java",
|
||||
"host/XjcHostSNameType.java",
|
||||
"host/XjcHostStatusType.java",
|
||||
"host/XjcHostStatusValueType.java",
|
||||
"host/XjcHostUpdate.java",
|
||||
"iirdea/ObjectFactory.java",
|
||||
"iirdea/XjcIirdeaCode.java",
|
||||
"iirdea/XjcIirdeaResponse.java",
|
||||
"iirdea/XjcIirdeaResponseElement.java",
|
||||
"iirdea/XjcIirdeaResult.java",
|
||||
"launch/ObjectFactory.java",
|
||||
"launch/XjcLaunchCdNameType.java",
|
||||
"launch/XjcLaunchCdType.java",
|
||||
"launch/XjcLaunchCheck.java",
|
||||
"launch/XjcLaunchCheckFormType.java",
|
||||
"launch/XjcLaunchChkData.java",
|
||||
"launch/XjcLaunchClaimKeyType.java",
|
||||
"launch/XjcLaunchCodeMarkType.java",
|
||||
"launch/XjcLaunchCodeType.java",
|
||||
"launch/XjcLaunchCreData.java",
|
||||
"launch/XjcLaunchCreate.java",
|
||||
"launch/XjcLaunchCreateNoticeType.java",
|
||||
"launch/XjcLaunchDelete.java",
|
||||
"launch/XjcLaunchIdContainerType.java",
|
||||
"launch/XjcLaunchInfData.java",
|
||||
"launch/XjcLaunchInfo.java",
|
||||
"launch/XjcLaunchNoticeIDType.java",
|
||||
"launch/XjcLaunchObjectType.java",
|
||||
"launch/XjcLaunchPhaseType.java",
|
||||
"launch/XjcLaunchPhaseTypeValue.java",
|
||||
"launch/XjcLaunchStatusType.java",
|
||||
"launch/XjcLaunchStatusValueType.java",
|
||||
"launch/XjcLaunchUpdate.java",
|
||||
"mark/ObjectFactory.java",
|
||||
"mark/XjcMarkAbstractMark.java",
|
||||
"mark/XjcMarkAbstractMarkType.java",
|
||||
"mark/XjcMarkAddrType.java",
|
||||
"mark/XjcMarkContactType.java",
|
||||
"mark/XjcMarkContactTypeType.java",
|
||||
"mark/XjcMarkCourtType.java",
|
||||
"mark/XjcMarkE164Type.java",
|
||||
"mark/XjcMarkEntitlementType.java",
|
||||
"mark/XjcMarkHolderType.java",
|
||||
"mark/XjcMarkMark.java",
|
||||
"mark/XjcMarkMarkType.java",
|
||||
"mark/XjcMarkProtectionType.java",
|
||||
"mark/XjcMarkTrademarkType.java",
|
||||
"mark/XjcMarkTreatyOrStatuteType.java",
|
||||
"rde/ObjectFactory.java",
|
||||
"rde/XjcRdeContent.java",
|
||||
"rde/XjcRdeContentType.java",
|
||||
"rde/XjcRdeContentsType.java",
|
||||
"rde/XjcRdeDelete.java",
|
||||
"rde/XjcRdeDeleteType.java",
|
||||
"rde/XjcRdeDeletesType.java",
|
||||
"rde/XjcRdeDeposit.java",
|
||||
"rde/XjcRdeDepositTypeType.java",
|
||||
"rde/XjcRdeMenuType.java",
|
||||
"rde/XjcRdeRrType.java",
|
||||
"rdecontact/ObjectFactory.java",
|
||||
"rdecontact/XjcRdeContact.java",
|
||||
"rdecontact/XjcRdeContactAbstract.java",
|
||||
"rdecontact/XjcRdeContactDelete.java",
|
||||
"rdecontact/XjcRdeContactDeleteType.java",
|
||||
"rdecontact/XjcRdeContactElement.java",
|
||||
"rdecontact/XjcRdeContactTransferDataType.java",
|
||||
"rdedomain/ObjectFactory.java",
|
||||
"rdedomain/XjcRdeDomain.java",
|
||||
"rdedomain/XjcRdeDomainAbstract.java",
|
||||
"rdedomain/XjcRdeDomainDelete.java",
|
||||
"rdedomain/XjcRdeDomainDeleteType.java",
|
||||
"rdedomain/XjcRdeDomainElement.java",
|
||||
"rdedomain/XjcRdeDomainTransferDataType.java",
|
||||
"rdeeppparams/ObjectFactory.java",
|
||||
"rdeeppparams/XjcRdeEppParams.java",
|
||||
"rdeeppparams/XjcRdeEppParamsAbstract.java",
|
||||
"rdeeppparams/XjcRdeEppParamsElement.java",
|
||||
"rdeheader/ObjectFactory.java",
|
||||
"rdeheader/XjcRdeHeader.java",
|
||||
"rdeheader/XjcRdeHeaderCount.java",
|
||||
"rdeheader/XjcRdeHeaderElement.java",
|
||||
"rdehost/ObjectFactory.java",
|
||||
"rdehost/XjcRdeHost.java",
|
||||
"rdehost/XjcRdeHostAbstractHost.java",
|
||||
"rdehost/XjcRdeHostDelete.java",
|
||||
"rdehost/XjcRdeHostDeleteType.java",
|
||||
"rdehost/XjcRdeHostElement.java",
|
||||
"rdeidn/ObjectFactory.java",
|
||||
"rdeidn/XjcRdeIdn.java",
|
||||
"rdeidn/XjcRdeIdnDelete.java",
|
||||
"rdeidn/XjcRdeIdnDeleteType.java",
|
||||
"rdeidn/XjcRdeIdnElement.java",
|
||||
"rdenndn/ObjectFactory.java",
|
||||
"rdenndn/XjcRdeNndn.java",
|
||||
"rdenndn/XjcRdeNndnAbstract.java",
|
||||
"rdenndn/XjcRdeNndnDelete.java",
|
||||
"rdenndn/XjcRdeNndnDeleteType.java",
|
||||
"rdenndn/XjcRdeNndnElement.java",
|
||||
"rdenndn/XjcRdeNndnNameState.java",
|
||||
"rdenndn/XjcRdeNndnNameStateValue.java",
|
||||
"rdenotification/ObjectFactory.java",
|
||||
"rdenotification/XjcRdeNotification.java",
|
||||
"rdenotification/XjcRdeNotificationElement.java",
|
||||
"rdenotification/XjcRdeNotificationName.java",
|
||||
"rdenotification/XjcRdeNotificationStatusType.java",
|
||||
"rdepolicy/ObjectFactory.java",
|
||||
"rdepolicy/XjcRdePolicy.java",
|
||||
"rdepolicy/XjcRdePolicyElement.java",
|
||||
"rderegistrar/ObjectFactory.java",
|
||||
"rderegistrar/XjcRdeRegistrar.java",
|
||||
"rderegistrar/XjcRdeRegistrarAbstract.java",
|
||||
"rderegistrar/XjcRdeRegistrarAddrType.java",
|
||||
"rderegistrar/XjcRdeRegistrarDelete.java",
|
||||
"rderegistrar/XjcRdeRegistrarDeleteType.java",
|
||||
"rderegistrar/XjcRdeRegistrarElement.java",
|
||||
"rderegistrar/XjcRdeRegistrarPostalInfoEnumType.java",
|
||||
"rderegistrar/XjcRdeRegistrarPostalInfoType.java",
|
||||
"rderegistrar/XjcRdeRegistrarStatusType.java",
|
||||
"rderegistrar/XjcRdeRegistrarWhoisInfoType.java",
|
||||
"rdereport/ObjectFactory.java",
|
||||
"rdereport/XjcRdeReport.java",
|
||||
"rdereport/XjcRdeReportReport.java",
|
||||
"rgp/ObjectFactory.java",
|
||||
"rgp/XjcRgpInfData.java",
|
||||
"rgp/XjcRgpMixedType.java",
|
||||
"rgp/XjcRgpOpType.java",
|
||||
"rgp/XjcRgpReportTextType.java",
|
||||
"rgp/XjcRgpReportType.java",
|
||||
"rgp/XjcRgpRespDataType.java",
|
||||
"rgp/XjcRgpRestoreType.java",
|
||||
"rgp/XjcRgpStatusType.java",
|
||||
"rgp/XjcRgpStatusValueType.java",
|
||||
"rgp/XjcRgpUpData.java",
|
||||
"rgp/XjcRgpUpdate.java",
|
||||
"secdns/ObjectFactory.java",
|
||||
"secdns/XjcSecdnsChgType.java",
|
||||
"secdns/XjcSecdnsCreate.java",
|
||||
"secdns/XjcSecdnsDsDataType.java",
|
||||
"secdns/XjcSecdnsDsOrKeyType.java",
|
||||
"secdns/XjcSecdnsInfData.java",
|
||||
"secdns/XjcSecdnsKeyDataType.java",
|
||||
"secdns/XjcSecdnsRemType.java",
|
||||
"secdns/XjcSecdnsUpdate.java",
|
||||
"smd/ObjectFactory.java",
|
||||
"smd/XjcSmdAbstractSignedMark.java",
|
||||
"smd/XjcSmdAbstractSignedMarkElement.java",
|
||||
"smd/XjcSmdEncodedSignedMark.java",
|
||||
"smd/XjcSmdIssuerInfo.java",
|
||||
"smd/XjcSmdSignedMark.java",
|
||||
"smd/XjcSmdSignedMarkElement.java",
|
||||
]
|
|
@ -1,66 +0,0 @@
|
|||
# Copyright 2017 The Nomulus 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 rule for unit testing the zip_file() rule."""
|
||||
|
||||
load("//java/google/registry/builddefs:defs.bzl", "ZIPPER")
|
||||
|
||||
def _impl(ctx):
|
||||
"""Implementation of zip_contents_test() rule."""
|
||||
cmd = [
|
||||
"set -e",
|
||||
'repo="$(pwd)"',
|
||||
'zipper="${repo}/%s"' % ctx.file._zipper.short_path,
|
||||
'archive="${repo}/%s"' % ctx.file.src.short_path,
|
||||
('listing="$("${zipper}" v "${archive}"' +
|
||||
' | grep -v ^d | awk \'{print $3}\' | LC_ALL=C sort)"'),
|
||||
'if [[ "${listing}" != "%s" ]]; then' % (
|
||||
"\n".join(ctx.attr.contents.keys())
|
||||
),
|
||||
' echo "archive had different file listing:"',
|
||||
' "${zipper}" v "${archive}" | grep -v ^d',
|
||||
" exit 1",
|
||||
"fi",
|
||||
'tmp="$(mktemp -d "${TMPDIR:-/tmp}/zip_contents_test.XXXXXXXXXX")"',
|
||||
'cd "${tmp}"',
|
||||
'"${zipper}" x "${archive}"',
|
||||
]
|
||||
for path, data in ctx.attr.contents.items():
|
||||
cmd += [
|
||||
'if [[ "$(cat "%s")" != "%s" ]]; then' % (path, data),
|
||||
' echo "%s had different contents:"' % path,
|
||||
' cat "%s"' % path,
|
||||
" exit 1",
|
||||
"fi",
|
||||
]
|
||||
cmd += [
|
||||
'cd "${repo}"',
|
||||
'rm -rf "${tmp}"',
|
||||
]
|
||||
ctx.actions.write(
|
||||
output = ctx.outputs.executable,
|
||||
content = "\n".join(cmd),
|
||||
is_executable = True,
|
||||
)
|
||||
return struct(runfiles = ctx.runfiles([ctx.file.src, ctx.file._zipper]))
|
||||
|
||||
zip_contents_test = rule(
|
||||
implementation = _impl,
|
||||
test = True,
|
||||
attrs = {
|
||||
"src": attr.label(allow_single_file = True),
|
||||
"contents": attr.string_dict(),
|
||||
"_zipper": attr.label(default = Label(ZIPPER), allow_single_file = True),
|
||||
},
|
||||
)
|
Loading…
Add table
Add a link
Reference in a new issue