Remove old Bazel files (#151)

This commit is contained in:
gbrodman 2019-07-02 16:24:01 -04:00 committed by GitHub
parent 82fa3d7349
commit 32d5940be3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 0 additions and 845 deletions

View file

@ -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 []

View file

@ -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
)

View file

@ -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),
},
)

View file

@ -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",
]

View file

@ -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),
},
)