| #  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( | 
 |     "@io_bazel_rules_go//go:def.bzl", | 
 |     _go_context = "go_context", | 
 |     _go_rule = "go_rule", | 
 | ) | 
 | load( | 
 |     "@bazel_skylib//lib:shell.bzl", | 
 |     "shell", | 
 | ) | 
 |  | 
 | def _fietsje_runner_impl(ctx): | 
 |     go = _go_context(ctx) | 
 |     out_file = ctx.actions.declare_file(ctx.label.name + ".bash") | 
 |     substitutions = { | 
 |         "@@GOTOOL@@": shell.quote(go.go.path), | 
 |         "@@FIETSJE_SHORT_PATH@@": shell.quote(ctx.executable.fietsje.short_path), | 
 |     } | 
 |     ctx.actions.expand_template( | 
 |         template = ctx.file._template, | 
 |         output = out_file, | 
 |         substitutions = substitutions, | 
 |         is_executable = True, | 
 |     ) | 
 |     runfiles = ctx.runfiles(files = [ | 
 |         ctx.executable.fietsje, | 
 |         go.go, | 
 |     ]) | 
 |     return [DefaultInfo( | 
 |         files = depset([out_file]), | 
 |         runfiles = runfiles, | 
 |         executable = out_file, | 
 |     )] | 
 |  | 
 | _fietsje_runner = _go_rule( | 
 |     implementation = _fietsje_runner_impl, | 
 |     attrs = { | 
 |         "fietsje": attr.label( | 
 |             default = "//build/fietsje", | 
 |             executable = True, | 
 |             cfg = 'host', | 
 |         ), | 
 |         "_template": attr.label( | 
 |             default = "//build/fietsje:fietsje.bash.in", | 
 |             allow_single_file = True, | 
 |         ), | 
 |     }, | 
 | ) | 
 |  | 
 | def fietsje(name): | 
 |     runner_name = name + "-runner" | 
 |     _fietsje_runner( | 
 |         name = runner_name, | 
 |     ) | 
 |     native.sh_binary( | 
 |         name = name, | 
 |         srcs = [runner_name], | 
 |     ) |