mdarocha 0233a69802 openra: add updateScript
A generic updateScript that can support any openra release paths
2025-05-31 13:36:08 +02:00

76 lines
2.3 KiB
Bash

if [[ -z "${UPDATE_NIX_ATTR_PATH:-}" ]]; then
echo "Missing UPDATE_NIX_ATTR_PATH - make sure you use mainters/scripts/update.nix to run this script!" 1>&2
exit 1
fi
attrPath="$UPDATE_NIX_ATTR_PATH"
nixFilePath="$(pwd)/pkgs/games/openra/engines/$build/default.nix"
if [[ ! -f "$nixFilePath" ]]; then
echo "$nixFilePath does not exist!" 1>&2
exit 1
fi
depsFilePath="$(pwd)/pkgs/games/openra/engines/$build/deps.json"
if [[ ! -f "$depsFilePath" ]]; then
echo "$depsFilePath does not exist!" 1>&2
exit 1
fi
# if on bleed, update to the latest commit from the bleed branch
# otherwise, check Github releases for releases with a matching prefix
declare newVersion
declare newHash
if [[ "$build" == "bleed" ]]; then
prefetchResult=$(nix-prefetch-github OpenRA OpenRA --json --rev "$build")
newRev=$(echo "$prefetchResult" | jq -e -r '.rev')
if [[ "$currentRev" == "$newRev" ]]; then
echo "Already up to date!" 1>&2
echo "[]"
exit 0
fi
# update rev
sed -i -E 's#(rev = ").*(";)#\1'"$newRev"'\2#' "$nixFilePath"
# get new version based on commit date from github
newVersion=$(curl -s "https://api.github.com/repos/OpenRA/OpenRA/commits/$newRev" |\
jq -r '.commit.committer.date' |\
xargs -I{} date -d {} +%Y%m%d)
newHash=$(echo "$prefetchResult" | jq -e -r '.hash')
else
newVersion=$(curl -s "https://api.github.com/repos/OpenRA/OpenRA/releases" |\
jq -r --arg prefix "$build" \
'first(.[] | select(.tag_name | startswith($prefix)) | .tag_name) | split("-")[1]')
if [[ "$currentVersion" == "$newVersion" ]]; then
echo "Already up to date!" 1>&2
echo "[]"
exit 0
fi
newHash=$(nix-prefetch-github OpenRA OpenRA --json --rev "$build-$newVersion" | jq -r '.hash')
fi
# update version
sed -i -E 's#(version = ").*(";)#\1'"$newVersion"'\2#' "$nixFilePath"
# update hash
sed -i -E 's#(hash = ").*(";)#\1'"$newHash"'\2#' "$nixFilePath"
# update deps.json by running the fetch-deps script
# shellcheck disable=SC2091
$(nix-build -A "$attrPath".fetch-deps --no-out-link) 1>&2
# echo commit info, according to what maintainers/scripts/update.nix needs
cat <<-EOF
[{
"attrPath": "$attrPath",
"oldVersion": "$currentVersion",
"newVersion": "$newVersion",
"files": ["$nixFilePath", "$depsFilePath"]
}]
EOF