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/corverroos/commentwrap. This can
be removed when go_tool_library gets replaced with transitions:
https://github.com/bazelbuild/rules_go/issues/2374

diff -ur a/BUILD.bazel b/BUILD.bazel
--- a/BUILD.bazel	2021-05-20 13:21:49.582041541 +0200
+++ b/BUILD.bazel	2021-05-21 14:25:51.550052340 +0200
@@ -1,4 +1,15 @@
-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 = ["commentwrap.go"],
+    importpath = "github.com/corverroos/commentwrap",
+    visibility = ["//visibility:public"],
+    deps = [
+        "@com_github_muesli_reflow//:go_tool_library",
+        "@org_golang_x_tools//go/analysis:go_tool_library",
+    ],
+)
 
 go_library(
     name = "go_default_library",
