1# Copyright 2024 The Bazel Authors. All rights reserved. 2# 3# Licensed under the Apache License, Version 2.0 (the "License"); 4# you may not use this file except in compliance with the License. 5# You may obtain a copy of the License at 6# 7# http://www.apache.org/licenses/LICENSE-2.0 8# 9# Unless required by applicable law or agreed to in writing, software 10# distributed under the License is distributed on an "AS IS" BASIS, 11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12# See the License for the specific language governing permissions and 13# limitations under the License. 14 15"""Skylib module containing rules to create metadata about subdirectories.""" 16 17load(":providers.bzl", "DirectoryInfo") 18 19def _subdirectory_impl(ctx): 20 dir = ctx.attr.parent[DirectoryInfo].get_subdirectory(ctx.attr.path) 21 return [ 22 dir, 23 DefaultInfo(files = dir.transitive_files), 24 ] 25 26subdirectory = rule( 27 implementation = _subdirectory_impl, 28 attrs = { 29 "parent": attr.label( 30 providers = [DirectoryInfo], 31 mandatory = True, 32 doc = "A label corresponding to the parent directory (or subdirectory).", 33 ), 34 "path": attr.string( 35 mandatory = True, 36 doc = "A path within the parent directory (eg. \"path/to/subdir\")", 37 ), 38 }, 39 provides = [DirectoryInfo], 40) 41