sonobuoy: add custom update script

This commit is contained in:
Paul Meyer 2023-12-09 21:26:14 +01:00
parent b96fc12835
commit 5b9fbcd1b2
2 changed files with 56 additions and 1 deletions

View File

@ -1,7 +1,8 @@
{ lib, buildGoModule, fetchFromGitHub }:
# SHA of ${version} for the tool's help output. Unfortunately this is needed in build flags.
let rev = "6f9e27f1795f10475c9f6f5decdff692e1e228da";
# The update script can update this automatically, the comment is used to find the line.
let rev = "6f9e27f1795f10475c9f6f5decdff692e1e228da"; # update-commit-sha
in
buildGoModule rec {
pname = "sonobuoy";
@ -27,6 +28,10 @@ buildGoModule rec {
subPackages = [ "." ];
passthru = {
updateScript = ./update.sh;
};
meta = with lib; {
description = "Diagnostic tool that makes it easier to understand the state of a Kubernetes cluster";
longDescription = ''

View File

@ -0,0 +1,50 @@
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p nix-update curl jq gnused
set -euo pipefail
# Do the actual update.
nix-update "${UPDATE_NIX_ATTR_PATH}"
# Get the src metadata.
src=$(
nix-instantiate --json --eval --strict --expr '
with import ./. {};
{
owner = '"${UPDATE_NIX_ATTR_PATH}"'.src.owner;
repo = '"${UPDATE_NIX_ATTR_PATH}"'.src.repo;
tag = '"${UPDATE_NIX_ATTR_PATH}"'.src.rev;
}'
)
owner=$(jq -r '.owner' <<< "${src}")
repo=$(jq -r '.repo' <<< "${src}")
tag=$(jq -r '.tag' <<< "${src}")
# Curl the release to get the commit sha.
curlFlags=("-fsSL")
curlFlags+=(${GITHUB_TOKEN:+-u ":$GITHUB_TOKEN"})
read -r type tag_sha < <(
curl "${curlFlags[@]}" "https://api.github.com/repos/${owner}/${repo}/git/ref/tags/${tag}" |
jq -j '.object.type, " ", .object.sha, "\n"'
)
if [[ "${type}" == "commit" ]]; then
sha="${tag_sha}"
else
sha=$(
curl "${curlFlags[@]}" "https://api.github.com/repos/${owner}/${repo}/git/tags/${tag_sha}" |
jq '.object.sha'
)
fi
if [[ -z "${sha}" ]]; then
echo "failed to get commit sha of ${owner}/${repo} @ ${tag}" >&2
exit 1
fi
echo "updating commit hash of ${owner}/${repo} @ ${tag} to ${sha}" >&2
cd "$(dirname "$(readlink -f "$0")")"
sed -i "s|\".*\"; # update-commit-sha|${sha}; # update-commit-sha|" default.nix