mirror of
https://github.com/github/codeql.git
synced 2025-12-16 16:53:25 +01:00
60 lines
2.6 KiB
Python
60 lines
2.6 KiB
Python
def _ripunzip_archive_impl(repository_ctx):
|
|
version = repository_ctx.attr.version
|
|
url_prefix = "https://github.com/GoogleChrome/ripunzip/releases/download/v%s" % version
|
|
build_file = Label("//misc/ripunzip:BUILD.ripunzip.bazel")
|
|
if "linux" in repository_ctx.os.name:
|
|
# ripunzip only provides a deb package for Linux: we fish the binary out of it
|
|
# a deb archive contains a data.tar.xz one which contains the files to be installed under usr/bin
|
|
repository_ctx.download_and_extract(
|
|
url = "%s/ripunzip_%s-1_amd64.deb" % (url_prefix, version),
|
|
sha256 = repository_ctx.attr.sha256_linux,
|
|
canonical_id = "ripunzip-linux",
|
|
output = "deb",
|
|
)
|
|
repository_ctx.extract(
|
|
"deb/data.tar.xz",
|
|
strip_prefix = "usr/bin",
|
|
output = "bin",
|
|
)
|
|
elif "windows" in repository_ctx.os.name:
|
|
repository_ctx.download_and_extract(
|
|
url = "%s/ripunzip_v%s_x86_64-pc-windows-msvc.zip" % (url_prefix, version),
|
|
canonical_id = "ripunzip-windows",
|
|
sha256 = repository_ctx.attr.sha256_windows,
|
|
output = "bin",
|
|
)
|
|
elif "mac os" in repository_ctx.os.name:
|
|
arch = repository_ctx.os.arch
|
|
if arch == "x86_64":
|
|
suffix = "x86_64-apple-darwin"
|
|
sha256 = repository_ctx.attr.sha256_macos_intel
|
|
canonical_id = "ripunzip-macos-intel"
|
|
elif arch == "aarch64":
|
|
suffix = "aarch64-apple-darwin"
|
|
sha256 = repository_ctx.attr.sha256_macos_arm
|
|
canonical_id = "ripunzip-macos-arm"
|
|
else:
|
|
fail("Unsupported macOS architecture: %s" % arch)
|
|
repository_ctx.download_and_extract(
|
|
url = "%s/ripunzip_v%s_%s.tar.gz" % (url_prefix, version, suffix),
|
|
sha256 = sha256,
|
|
canonical_id = canonical_id,
|
|
output = "bin",
|
|
)
|
|
else:
|
|
fail("Unsupported OS: %s" % repository_ctx.os.name)
|
|
repository_ctx.file("WORKSPACE.bazel")
|
|
repository_ctx.symlink(build_file, "BUILD.bazel")
|
|
|
|
ripunzip_archive = repository_rule(
|
|
implementation = _ripunzip_archive_impl,
|
|
doc = "Downloads a prebuilt ripunzip binary for the host platform from https://github.com/GoogleChrome/ripunzip/releases",
|
|
attrs = {
|
|
"version": attr.string(mandatory = True),
|
|
"sha256_linux": attr.string(mandatory = True),
|
|
"sha256_windows": attr.string(mandatory = True),
|
|
"sha256_macos_intel": attr.string(mandatory = True),
|
|
"sha256_macos_arm": attr.string(mandatory = True),
|
|
},
|
|
)
|