| #!/usr/bin/env bash |
| # Copyright 2019 The Bazel Authors. All rights reserved. |
| # |
| # 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. |
| # |
| # Renerates the Stardoc release binary from source in @io_bazel. |
| # |
| # This should only need to be run for cutting a new Stardoc release. |
| |
| set -eu |
| |
| echo "** Building Stardoc from source..." |
| bazel build --java_language_version=11 @io_bazel//src/main/java/com/google/devtools/build/skydoc:skydoc_deploy.jar |
| |
| echo "** Copying Stardoc binary..." |
| cp bazel-bin/external/io_bazel/src/main/java/com/google/devtools/build/skydoc/skydoc_deploy.jar \ |
| stardoc/stardoc_binary.jar |
| |
| echo "** Stardoc copied." |
| |
| echo "** Copying stardoc_output.proto from source..." |
| # Path of proto definition relative to Bazel source tree root |
| PROTO_SRC=src/main/java/com/google/devtools/build/skydoc/rendering/proto/stardoc_output.proto |
| # Path to @io_bazel repo on disk |
| IO_BAZEL="$(bazel info output_base)/external/io_bazel" |
| # Commit of @io_bazel's git_repository (generated by patch_cmds command in WORKSPACE) |
| IO_BAZEL_SHA="$(cat ${IO_BAZEL}/.io_bazel.sha)" |
| # Retrieve the first commit to modify ${PROTO_SRC} in the history of ${IO_BAZEL_SHA} |
| # using Github API; see https://docs.github.com/en/rest/commits/commits?apiVersion=2022-11-28 |
| # We need this because git_repository does a shallow clone, so our @io_bazel repo |
| # does not have the git log for any given file. |
| PROTO_SRC_SHA="$(curl -s -L -H "Accept: application/vnd.github+json" \ |
| "https://api.github.com/repos/bazelbuild/bazel/commits?sha=${IO_BAZEL_SHA}&path=${PROTO_SRC}" \ |
| | grep -m 1 '"sha":' | sed 's/.*"sha": "\(.*\)",.*/\1/')" |
| # Copy proto file and insert "Vendored from" slug immediately below the license. |
| sed -e '/^\/\/ limitations under the License./ a //\n// Vendored from '"${PROTO_SRC}"'\n// in the Bazel source tree at commit '"${PROTO_SRC_SHA}" \ |
| "${IO_BAZEL}/${PROTO_SRC}" > stardoc/proto/stardoc_output.proto |
| echo "** stardoc_output.proto copied." |