1*60517a1eSAndroid Build Coastguard Worker// Copyright 2023 The Bazel Authors. All rights reserved. 2*60517a1eSAndroid Build Coastguard Worker// 3*60517a1eSAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License"); 4*60517a1eSAndroid Build Coastguard Worker// you may not use this file except in compliance with the License. 5*60517a1eSAndroid Build Coastguard Worker// You may obtain a copy of the License at 6*60517a1eSAndroid Build Coastguard Worker// 7*60517a1eSAndroid Build Coastguard Worker// http://www.apache.org/licenses/LICENSE-2.0 8*60517a1eSAndroid Build Coastguard Worker// 9*60517a1eSAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software 10*60517a1eSAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS, 11*60517a1eSAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*60517a1eSAndroid Build Coastguard Worker// See the License for the specific language governing permissions and 13*60517a1eSAndroid Build Coastguard Worker// limitations under the License. 14*60517a1eSAndroid Build Coastguard Worker 15*60517a1eSAndroid Build Coastguard Workerpackage python 16*60517a1eSAndroid Build Coastguard Worker 17*60517a1eSAndroid Build Coastguard Workerimport ( 18*60517a1eSAndroid Build Coastguard Worker "github.com/bazelbuild/bazel-gazelle/rule" 19*60517a1eSAndroid Build Coastguard Worker) 20*60517a1eSAndroid Build Coastguard Worker 21*60517a1eSAndroid Build Coastguard Workerconst ( 22*60517a1eSAndroid Build Coastguard Worker pyBinaryKind = "py_binary" 23*60517a1eSAndroid Build Coastguard Worker pyLibraryKind = "py_library" 24*60517a1eSAndroid Build Coastguard Worker pyTestKind = "py_test" 25*60517a1eSAndroid Build Coastguard Worker) 26*60517a1eSAndroid Build Coastguard Worker 27*60517a1eSAndroid Build Coastguard Worker// Kinds returns a map that maps rule names (kinds) and information on how to 28*60517a1eSAndroid Build Coastguard Worker// match and merge attributes that may be found in rules of those kinds. 29*60517a1eSAndroid Build Coastguard Workerfunc (*Python) Kinds() map[string]rule.KindInfo { 30*60517a1eSAndroid Build Coastguard Worker return pyKinds 31*60517a1eSAndroid Build Coastguard Worker} 32*60517a1eSAndroid Build Coastguard Worker 33*60517a1eSAndroid Build Coastguard Workervar pyKinds = map[string]rule.KindInfo{ 34*60517a1eSAndroid Build Coastguard Worker pyBinaryKind: { 35*60517a1eSAndroid Build Coastguard Worker MatchAny: true, 36*60517a1eSAndroid Build Coastguard Worker NonEmptyAttrs: map[string]bool{ 37*60517a1eSAndroid Build Coastguard Worker "deps": true, 38*60517a1eSAndroid Build Coastguard Worker "main": true, 39*60517a1eSAndroid Build Coastguard Worker "srcs": true, 40*60517a1eSAndroid Build Coastguard Worker "imports": true, 41*60517a1eSAndroid Build Coastguard Worker }, 42*60517a1eSAndroid Build Coastguard Worker SubstituteAttrs: map[string]bool{}, 43*60517a1eSAndroid Build Coastguard Worker MergeableAttrs: map[string]bool{ 44*60517a1eSAndroid Build Coastguard Worker "srcs": true, 45*60517a1eSAndroid Build Coastguard Worker }, 46*60517a1eSAndroid Build Coastguard Worker ResolveAttrs: map[string]bool{ 47*60517a1eSAndroid Build Coastguard Worker "deps": true, 48*60517a1eSAndroid Build Coastguard Worker }, 49*60517a1eSAndroid Build Coastguard Worker }, 50*60517a1eSAndroid Build Coastguard Worker pyLibraryKind: { 51*60517a1eSAndroid Build Coastguard Worker MatchAny: false, 52*60517a1eSAndroid Build Coastguard Worker MatchAttrs: []string{"srcs"}, 53*60517a1eSAndroid Build Coastguard Worker NonEmptyAttrs: map[string]bool{ 54*60517a1eSAndroid Build Coastguard Worker "deps": true, 55*60517a1eSAndroid Build Coastguard Worker "srcs": true, 56*60517a1eSAndroid Build Coastguard Worker "imports": true, 57*60517a1eSAndroid Build Coastguard Worker }, 58*60517a1eSAndroid Build Coastguard Worker SubstituteAttrs: map[string]bool{}, 59*60517a1eSAndroid Build Coastguard Worker MergeableAttrs: map[string]bool{ 60*60517a1eSAndroid Build Coastguard Worker "srcs": true, 61*60517a1eSAndroid Build Coastguard Worker }, 62*60517a1eSAndroid Build Coastguard Worker ResolveAttrs: map[string]bool{ 63*60517a1eSAndroid Build Coastguard Worker "deps": true, 64*60517a1eSAndroid Build Coastguard Worker }, 65*60517a1eSAndroid Build Coastguard Worker }, 66*60517a1eSAndroid Build Coastguard Worker pyTestKind: { 67*60517a1eSAndroid Build Coastguard Worker MatchAny: false, 68*60517a1eSAndroid Build Coastguard Worker NonEmptyAttrs: map[string]bool{ 69*60517a1eSAndroid Build Coastguard Worker "deps": true, 70*60517a1eSAndroid Build Coastguard Worker "main": true, 71*60517a1eSAndroid Build Coastguard Worker "srcs": true, 72*60517a1eSAndroid Build Coastguard Worker "imports": true, 73*60517a1eSAndroid Build Coastguard Worker }, 74*60517a1eSAndroid Build Coastguard Worker SubstituteAttrs: map[string]bool{}, 75*60517a1eSAndroid Build Coastguard Worker MergeableAttrs: map[string]bool{ 76*60517a1eSAndroid Build Coastguard Worker "srcs": true, 77*60517a1eSAndroid Build Coastguard Worker }, 78*60517a1eSAndroid Build Coastguard Worker ResolveAttrs: map[string]bool{ 79*60517a1eSAndroid Build Coastguard Worker "deps": true, 80*60517a1eSAndroid Build Coastguard Worker }, 81*60517a1eSAndroid Build Coastguard Worker }, 82*60517a1eSAndroid Build Coastguard Worker} 83*60517a1eSAndroid Build Coastguard Worker 84*60517a1eSAndroid Build Coastguard Worker// Loads returns .bzl files and symbols they define. Every rule generated by 85*60517a1eSAndroid Build Coastguard Worker// GenerateRules, now or in the past, should be loadable from one of these 86*60517a1eSAndroid Build Coastguard Worker// files. 87*60517a1eSAndroid Build Coastguard Workerfunc (py *Python) Loads() []rule.LoadInfo { 88*60517a1eSAndroid Build Coastguard Worker return pyLoads 89*60517a1eSAndroid Build Coastguard Worker} 90*60517a1eSAndroid Build Coastguard Worker 91*60517a1eSAndroid Build Coastguard Workervar pyLoads = []rule.LoadInfo{ 92*60517a1eSAndroid Build Coastguard Worker { 93*60517a1eSAndroid Build Coastguard Worker Name: "@rules_python//python:defs.bzl", 94*60517a1eSAndroid Build Coastguard Worker Symbols: []string{ 95*60517a1eSAndroid Build Coastguard Worker pyBinaryKind, 96*60517a1eSAndroid Build Coastguard Worker pyLibraryKind, 97*60517a1eSAndroid Build Coastguard Worker pyTestKind, 98*60517a1eSAndroid Build Coastguard Worker }, 99*60517a1eSAndroid Build Coastguard Worker }, 100*60517a1eSAndroid Build Coastguard Worker} 101