Skip to main content
Glama
toolchain.bzl3.19 kB
DenoToolchainInfo = provider(fields = { "deno_exe": provider_field(typing.Any, default = None), "target_string": provider_field(typing.Any, default = None), "target_os": provider_field(typing.Any, default = None), "target_arch": provider_field(typing.Any, default = None), "deno_binary": provider_field(typing.Any, default = None), "deno_format": provider_field(typing.Any, default = None), "deno_run": provider_field(typing.Any, default = None), "deno_test": provider_field(typing.Any, default = None), "deno_workspace": provider_field(typing.Any, default = None), "deno_target_runtime": provider_field(typing.Any, default = None), }) def parse_target_string(target_string): """Parse target_string (e.g., 'linux-x86_64') into os and arch components. Returns: tuple of (os, arch) or (None, None) if target_string is None """ if not target_string: return (None, None) parts = target_string.split("-", 1) if len(parts) != 2: fail("Invalid target_string format: {}. Expected format: os-arch (e.g., linux-x86_64)".format(target_string)) return (parts[0], parts[1]) def deno_toolchain_impl(ctx) -> list[[DefaultInfo, DenoToolchainInfo]]: """ A deno toolchain. """ target_string = ctx.attrs.target_string target_os, target_arch = parse_target_string(target_string) return [ DefaultInfo(default_outputs = []), DenoToolchainInfo( deno_exe = ctx.attrs.deno_exe, target_string = target_string, target_os = target_os, target_arch = target_arch, deno_binary = ctx.attrs._deno_binary, deno_format = ctx.attrs._deno_format, deno_run = ctx.attrs._deno_run, deno_test = ctx.attrs._deno_test, deno_workspace = ctx.attrs._deno_workspace, deno_target_runtime = ctx.attrs._deno_target_runtime, ), ] deno_toolchain = rule( impl = deno_toolchain_impl, attrs = { "deno_exe": attrs.arg(), "target_string": attrs.string(default = ""), "_deno_binary": attrs.dep( default = "prelude-si//deno:deno_binary.py", providers = [DefaultInfo], ), "_deno_format": attrs.dep( default = "prelude-si//deno:deno_format.py", providers = [DefaultInfo], ), "_deno_run": attrs.dep( default = "prelude-si//deno:deno_run.py", providers = [DefaultInfo], ), "_deno_test": attrs.dep( default = "prelude-si//deno:deno_test.py", providers = [DefaultInfo], ), "_deno_workspace": attrs.dep( default = "prelude-si//deno:deno_workspace.py", providers = [DefaultInfo], ), "_deno_target_runtime": attrs.dep( default = "prelude-si//deno:deno_target_runtime.py", providers = [DefaultInfo], ), }, is_toolchain_rule = True, ) DenoWorkspaceInfo = provider( fields = { "workspace_dir": provider_field(typing.Any, default = None), "cache_dir": provider_field(typing.Any, default = None), }, )

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