From bd85fb05c2ab7417fd5b79ddd45e7c6ab018b7d8 Mon Sep 17 00:00:00 2001 From: "Adam C. Stephens" Date: Wed, 8 Apr 2026 14:05:21 -0400 Subject: [PATCH] actual-server: add updateScript --- pkgs/by-name/ac/actual-server/package.nix | 2 + pkgs/by-name/ac/actual-server/update.sh | 59 +++++++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100755 pkgs/by-name/ac/actual-server/update.sh diff --git a/pkgs/by-name/ac/actual-server/package.nix b/pkgs/by-name/ac/actual-server/package.nix index ef1e664a7551..95202e89d52e 100644 --- a/pkgs/by-name/ac/actual-server/package.nix +++ b/pkgs/by-name/ac/actual-server/package.nix @@ -130,7 +130,9 @@ stdenv.mkDerivation (finalAttrs: { passthru = { inherit (finalAttrs) offlineCache; + inherit translations; tests = nixosTests.actual; + updateScript = ./update.sh; }; meta = { diff --git a/pkgs/by-name/ac/actual-server/update.sh b/pkgs/by-name/ac/actual-server/update.sh new file mode 100755 index 000000000000..991d83833eff --- /dev/null +++ b/pkgs/by-name/ac/actual-server/update.sh @@ -0,0 +1,59 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p common-updater-scripts coreutils git jq nix-prefetch-github yarn-berry.yarn-berry-fetcher + +set -o errexit -o nounset -o pipefail + +package="actual-server" +owner="actualbudget" +repo="actual" +translations_repo="translations" +package_dir="pkgs/by-name/${package::2}/${package}" + +# +# package +# + +current_version=$(nix-instantiate --eval --expr "with import ./. {}; ${package}.version" --raw) +echo "Current version: ${current_version}" + +latest_version=$(list-git-tags --url="https://github.com/${owner}/${repo}" | grep -oP '^v\K[0-9.]+$' | sort --version-sort | tail --lines=1) +echo "Latest version: ${latest_version}" + +if [[ "${current_version}" == "${latest_version}" ]]; then + echo "${package} is up to date: ${current_version}" + exit 0 +fi + +echo "Updating ${package} from ${current_version} to ${latest_version}…" + +update-source-version "${package}" "${latest_version}" + +# +# translations +# + +echo "Updating translations repo" +old_translations_rev=$(nix-instantiate --eval --expr "with import ./. {}; ${package}.translations.rev" --raw) +old_translations_hash=$(nix-instantiate --eval --expr "with import ./. {}; ${package}.translations.outputHash" --raw) + +translations_rev=$(git ls-remote "https://github.com/${owner}/${translations_repo}" HEAD | cut -f1) +echo "Latest translations rev: ${translations_rev}" + +translations_hash=$(nix-prefetch-github --json --rev "${translations_rev}" "${owner}" "${translations_repo}" | jq --raw-output .hash) +echo "Translations hash: ${translations_hash}" + +sed -i "s|${old_translations_rev}|${translations_rev}|" "${package_dir}/package.nix" +sed -i "s|${old_translations_hash}|${translations_hash}|" "${package_dir}/package.nix" + +# +# yarn deps +# + +echo "Regenerating missing-hashes.json…" +src_path=$(nix-build --attr "${package}.src" --no-link) +yarn-berry-fetcher missing-hashes "${src_path}/yarn.lock" >"${package_dir}/missing-hashes.json" + +echo "Updating offline cache hash…" +update-source-version "${package}" --ignore-same-version --source-key=offlineCache + +echo "Done."