Copyright 2021 The Monogon Project Authors.

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.

This adds a go_tool_library target to github.com/muesli/reflow. This can
be removed when go_tool_library gets replaced with transition:
https://github.com/bazelbuild/rules_go/issues/2374

diff -ur a/BUILD.bazel b/BUILD.bazel
--- a/BUILD.bazel	2021-05-21 14:36:39.411306726 +0200
+++ b/BUILD.bazel	2021-05-21 14:37:02.602460127 +0200
@@ -1,4 +1,14 @@
-load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
+load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test", "go_tool_library")
+
+go_tool_library(
+    name = "go_tool_library",
+    srcs = [
+        "ansibuffer.go",
+        "reflow.go",
+    ],
+    importpath = "github.com/muesli/reflow",
+    visibility = ["//visibility:public"],
+)
 
 go_library(
     name = "go_default_library",
