"""Release notes generator"""

def print_rel_notes(*, name, version, archive):
    native.genrule(
        name = name,
        outs = [name + ".txt"],
        cmd = """
              [ "$$(/usr/bin/git rev-parse --is-shallow-repository)" == "true" ] && /usr/bin/git fetch --unshallow
              last_rel=$$(git describe --tags --abbrev=0 HEAD~1)
              changelog=$$(/usr/bin/git log tags/$$last_rel..HEAD --format=oneline --invert-grep --grep 'ignore-relnotes' --)
              sha=$$(/usr/bin/sha256sum $(SRCS) | cut -d ' '  -f1)
              cat > $@ <<EOF
**Changes since $$last_rel**
$$changelog

**MODULE.bazel setup**
~~~
bazel_dep(name = "rules_java", version = "{VERSION}")
~~~

**WORKSPACE setup**

With Bazel 8.0.0 and before 8.3.0, add the following to your `.bazelrc` file:

~~~
# https://github.com/bazelbuild/bazel/pull/26119
common --repositories_without_autoloads=bazel_features_version,bazel_features_globals
~~~

In all cases, add the following to your `WORKSPACE` file:

~~~
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
    name = "rules_java",
    urls = [
        "https://github.com/bazelbuild/rules_java/releases/download/{VERSION}/rules_java-{VERSION}.tar.gz",
    ],
    sha256 = "$$sha",
)

http_archive(
    name = "bazel_features",
    sha256 = "a660027f5a87f13224ab54b8dc6e191693c554f2692fcca46e8e29ee7dabc43b",
    strip_prefix = "bazel_features-1.30.0",
    url = "https://github.com/bazel-contrib/bazel_features/releases/download/v1.30.0/bazel_features-v1.30.0.tar.gz",
)

load("@bazel_features//:deps.bzl", "bazel_features_deps")
bazel_features_deps()

load("@rules_java//java:rules_java_deps.bzl", "rules_java_dependencies")
rules_java_dependencies()

# note that the following line is what is minimally required from protobuf for the java rules
# consider using the protobuf_deps() public API from @com_google_protobuf//:protobuf_deps.bzl
load("@com_google_protobuf//bazel/private:proto_bazel_features.bzl", "proto_bazel_features")  # buildifier: disable=bzl-visibility
proto_bazel_features(name = "proto_bazel_features")

# register toolchains
load("@rules_java//java:repositories.bzl", "rules_java_toolchains")
rules_java_toolchains()
~~~

**Using the rules**
See [the source](https://github.com/bazelbuild/rules_java/tree/{VERSION}).

EOF
              """.format(ARCHIVE = archive, VERSION = version),
        srcs = [archive],
        tags = ["local", "manual"],
        visibility = ["//test:__pkg__"],
    )
