Skip to main content
Glama
deno.bzl6.13 kB
load( "@prelude-si//:artifact.bzl", _VALID_PLATFORM_TARGETS = "VALID_PLATFORM_TARGETS", _artifact_promote = "artifact_promote", _artifact_publish = "artifact_publish", _validate_platform_targets = "validate_platform_targets", ) load( "@prelude-si//:build_metadata.bzl", _deno_git_metadata_typescript = "deno_git_metadata_typescript", ) load( "@prelude-si//:deno.bzl", _deno_binary = "deno_binary", _deno_binary_artifact = "deno_binary_artifact", _deno_format = "deno_format", _deno_test = "deno_test", ) load( "@prelude-si//macros:native.bzl", _alias = "alias", _test_suite = "test_suite", ) def deno_binary( name, main = "main.ts", deno_json = "deno.json", deno_lock = "deno.lock", git_metadata = True, platform_targets = _VALID_PLATFORM_TARGETS, visibility = ["PUBLIC"], **kwargs): # Validate all platform targets _validate_platform_targets(platform_targets, "deno_binary_artifact({})".format(name)) # If Git metadata is enabled, generate and add to extra_srcs if git_metadata: git_metadata_target = "{}-git-metadata-typescript".format(name) _deno_git_metadata_typescript( name = git_metadata_target, git_metadata = "prelude-si//build_metadata:git", visibility = visibility, ) # Add generated file to extra_srcs dict with src/ destination extra_srcs = kwargs.get("extra_srcs", {}) extra_srcs["src/git_metadata.ts"] = ":{}-git-metadata-typescript".format(name) kwargs["extra_srcs"] = extra_srcs _deno_binary( name = name, main = main, deno_json = deno_json, deno_lock = deno_lock, out = kwargs.get("out", name), visibility = visibility, **kwargs ) for target in platform_targets: # Convenience alias for cross-compilation _alias( name = "{}-{}".format(name, target), actual = ":{}".format(name), default_target_platform = "prelude-si//platforms:{}".format(target), visibility = visibility, ) if not rule_exists("build"): _alias( name = "build", actual = ":{}".format(name), ) def deno_format( visibility = ["PUBLIC"], **kwargs): _deno_format( visibility = visibility, **kwargs ) def deno_test( visibility = ["PUBLIC"], **kwargs): _deno_test( visibility = visibility, **kwargs ) def deno_binary_artifact( name, binary, source_url = "http://github.com/systeminit/si.git", author = "The System Initiative <dev@systeminit.com>", license = "Apache-2.0", artifact_destination = "s3://si-artifacts-prod", artifact_cname = "artifacts.systeminit.com", platform_targets = _VALID_PLATFORM_TARGETS, skip_all_publish = False, skip_all_promote = False, default_target = False, visibility = ["PUBLIC"]): """Create Deno binary artifact with publish/promote targets for all platforms. Creates base targets: - :{name}-binary-artifact - :publish-{name}-binary-artifact - :promote-{name}-binary-artifact Plus platform-specific aliases for each: - :{name}-binary-artifact-{platform} - :publish-{name}-binary-artifact-{platform} Args: name: Binary name binary: The deno_binary target source_url: Source code URL for metadata author: Author for metadata license: License string for metadata artifact_destination: S3 destination for artifacts artifact_cname: Canonical hostname for artifact URLs platform_targets: List of target platforms. Defaults to all supported Deno platforms. skip_all_publish: Skip publishing this artifact (default: False) skip_all_promote: Skip promoting this artifact (default: False) visibility: Target visibility """ # Validate all platform targets _validate_platform_targets(platform_targets, "deno_binary_artifact({})".format(name)) # Base artifact target deno_binary_artifact_name = "{}-binary-artifact".format(name) _deno_binary_artifact( name = deno_binary_artifact_name, binary = binary, binary_name = name, family = name, author = author, source_url = source_url, license = license, platform_targets = platform_targets, visibility = visibility, ) # Base publish target _artifact_publish( name = "publish-{}-binary-artifact".format(name), artifact = ":{}".format(deno_binary_artifact_name), destination = artifact_destination, cname = artifact_cname, platform_targets = platform_targets, skip_all = skip_all_publish, visibility = visibility, ) # Base promote target _artifact_promote( name = "promote-{}-binary-artifact".format(name), family = name, variant = "binary", destination = artifact_destination, cname = artifact_cname, platform_targets = platform_targets, skip_all = skip_all_promote, visibility = visibility, ) for platform in platform_targets: # Artifact alias _alias( name = "{}-binary-artifact-{}".format(name, platform), actual = ":{}-binary-artifact".format(name), default_target_platform = "prelude-si//platforms:{}".format(platform), visibility = visibility, ) # Publish alias _alias( name = "publish-{}-binary-artifact-{}".format(name, platform), actual = ":publish-{}-binary-artifact".format(name), default_target_platform = "prelude-si//platforms:{}".format(platform), visibility = visibility, ) if default_target: _alias( name = name, actual = ":{}".format(deno_binary_artifact_name), visibility = visibility, )

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/systeminit/si'

If you have feedback or need assistance with the MCP directory API, please join our Discord server