|  | #  Copyright 2020 The Monogon Project Authors. | 
|  | # | 
|  | #  SPDX-License-Identifier: Apache-2.0 | 
|  | # | 
|  | #  Licensed under the Apache License, Version 2.0 (the "License"); | 
|  | #  you may not use this file except in compliance with the License. | 
|  | #  You may obtain a copy of the License at | 
|  | # | 
|  | #      http://www.apache.org/licenses/LICENSE-2.0 | 
|  | # | 
|  | #  Unless required by applicable law or agreed to in writing, software | 
|  | #  distributed under the License is distributed on an "AS IS" BASIS, | 
|  | #  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
|  | #  See the License for the specific language governing permissions and | 
|  | #  limitations under the License. | 
|  |  | 
|  | load("@bazel_gazelle//:deps.bzl", "go_repository") | 
|  | load( | 
|  | "@io_bazel_rules_go//go/private:rules/rule.bzl", | 
|  | "go_rule", | 
|  | ) | 
|  | load( | 
|  | "@io_bazel_rules_go//go:def.bzl", | 
|  | "GoLibrary", | 
|  | "go_context", | 
|  | "go_library", | 
|  | ) | 
|  |  | 
|  | def _bindata_impl(ctx): | 
|  | out = ctx.actions.declare_file("bindata.go") | 
|  |  | 
|  | arguments = ctx.actions.args() | 
|  | arguments.add_all([ | 
|  | "-pkg", | 
|  | ctx.attr.package, | 
|  | "-prefix", | 
|  | ctx.label.workspace_root, | 
|  | "-o", | 
|  | out, | 
|  | ]) | 
|  | arguments.add_all(ctx.files.srcs) | 
|  |  | 
|  | ctx.actions.run( | 
|  | inputs = ctx.files.srcs, | 
|  | outputs = [out], | 
|  | executable = ctx.file.bindata, | 
|  | arguments = [arguments], | 
|  | ) | 
|  |  | 
|  | go = go_context(ctx) | 
|  |  | 
|  | source_files = [out] | 
|  |  | 
|  | library = go.new_library( | 
|  | go, | 
|  | srcs = source_files, | 
|  | ) | 
|  | source = go.library_to_source(go, None, library, False) | 
|  | providers = [library, source] | 
|  | output_groups = { | 
|  | "go_generated_srcs": source_files, | 
|  | } | 
|  |  | 
|  | return providers + [OutputGroupInfo(**output_groups)] | 
|  |  | 
|  | bindata = go_rule( | 
|  | _bindata_impl, | 
|  | attrs = { | 
|  | "srcs": attr.label_list(mandatory = True, allow_files = True), | 
|  | "package": attr.string(mandatory = True), | 
|  | "bindata": attr.label(allow_single_file = True, default = Label("@com_github_kevinburke_go_bindata//go-bindata")), | 
|  | }, | 
|  | ) |