Skip to main content
Glama
java_resources.bzl2.96 kB
# Copyright (c) Meta Platforms, Inc. and affiliates. # # This source code is licensed under both the MIT license found in the # LICENSE-MIT file in the root directory of this source tree and the Apache # License, Version 2.0 found in the LICENSE-APACHE file in the root directory # of this source tree. load("@prelude//:paths.bzl", "paths") load("@prelude//java:java_toolchain.bzl", "JavaToolchainInfo") # Infer the likely package name for the given path based on conventional # source root components. def get_src_package(src_root_prefixes: list[str], src_root_elements: list[str], path: str) -> str: for prefix in src_root_prefixes: if path.startswith(prefix): return paths.relativize( path, prefix, ) parts = path.split("/") for i in range(len(parts) - 2, -1, -1): part = parts[i] if part in src_root_elements: return "/".join(parts[i + 1:]) return path def get_resources_map( java_toolchain: JavaToolchainInfo, package: str, resources: list[Artifact], resources_root: [str, None]) -> dict[str, Artifact]: # As in v1, root the resource root via the current package. if resources_root != None: resources_root = paths.normalize(paths.join(package, resources_root)) resources_to_copy = {} for resource in resources: # Create the full resource path. full_resource = paths.join( resource.owner.package if resource.owner else package, resource.short_path, ) # As in v1 (https://fburl.com/code/j2vwny56, https://fburl.com/code/9era0xpz), # if this resource starts with the resource root, relativize and insert it as # is. if resources_root != None and paths.starts_with(full_resource, resources_root): resource_name = paths.relativize( full_resource, resources_root, ) if not resource_name: # Match v1 behavior: https://fburl.com/code/x7zhlz5m resource_name = resource.short_path else: resource_name = get_src_package(java_toolchain.src_root_prefixes, java_toolchain.src_root_elements, full_resource) resources_to_copy[resource_name] = resource return resources_to_copy def parse_src_roots(src_roots: list[str]) -> (list[str], list[str]): prefixes = [] elements = [] for src_root in src_roots: if src_root.startswith("/"): if not src_root.endswith("/"): fail("Elements in java.src_roots config that begin with a / must end in one too, but {} does not".format(src_root)) prefixes.append(src_root[1:]) elif "/" in src_root: fail("No / is permitted in java.src_roots config elements, but {} has one".format(src_root)) else: elements.append(src_root) return elements, prefixes

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