From 4eb5af0961b3c50d10249548dc9291f28ba7e606 Mon Sep 17 00:00:00 2001 From: Kira Bruneau Date: Sun, 7 Sep 2025 21:00:06 -0400 Subject: [PATCH] anytype: add custom update script (cherry picked from commit 1de0558391e42735bf83e0ddadcf031690432ebe) --- pkgs/by-name/an/anytype/package.nix | 2 + pkgs/by-name/an/anytype/update.sh | 61 +++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100755 pkgs/by-name/an/anytype/update.sh diff --git a/pkgs/by-name/an/anytype/package.nix b/pkgs/by-name/an/anytype/package.nix index c86dd07a701e..4dd4dabdd5a7 100644 --- a/pkgs/by-name/an/anytype/package.nix +++ b/pkgs/by-name/an/anytype/package.nix @@ -114,6 +114,8 @@ buildNpmPackage (finalAttrs: { }) ]; + passthru.updateScript = ./update.sh; + meta = { description = "P2P note-taking tool"; homepage = "https://anytype.io/"; diff --git a/pkgs/by-name/an/anytype/update.sh b/pkgs/by-name/an/anytype/update.sh new file mode 100755 index 000000000000..de3617cb7223 --- /dev/null +++ b/pkgs/by-name/an/anytype/update.sh @@ -0,0 +1,61 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p common-updater-scripts coreutils curl jq nix-update + +set -euo pipefail + +anytype_version=null +release_page=1 + +# Anytype often has many pre-releases between releases, which can span multiple pages +while [ "$anytype_version" = 'null' ]; do + readarray -t release < <( + curl "https://api.github.com/repos/anyproto/anytype-ts/releases?page=$release_page" \ + ${GITHUB_TOKEN:+--user ":$GITHUB_TOKEN"} \ + --silent \ + | jq --raw-output ' + map(select( + (.prerelease == false) and + (.tag_name | test("alpha|beta") | not) + )) | .[0] | .tag_name, .created_at + ' + ) + anytype_version=${release[0]//v} + anytype_release_date=${release[1]} + release_page=$((release_page+1)) +done + +if [ "$UPDATE_NIX_OLD_VERSION" = "$anytype_version" ]; then + echo "Already up to date!" + exit 0 +fi + +# https://github.com/anyproto/anytype-ts/blob/v0.49.2/electron/hook/locale.js +locales_rev=$( + curl "https://api.github.com/repos/anyproto/l10n-anytype-ts/commits?until=$anytype_release_date&per_page=1" \ + ${GITHUB_TOKEN:+--user ":$GITHUB_TOKEN"} \ + --silent \ + | jq --raw-output '.[0].sha' +) + +# https://github.com/anyproto/anytype-ts/blob/v0.49.2/update.sh +middleware_version=$( + curl "https://raw.githubusercontent.com/anyproto/anytype-ts/refs/tags/v$anytype_version/middleware.version" \ + ${GITHUB_TOKEN:+--user ":$GITHUB_TOKEN"} \ + --silent +) + +# https://github.com/anyproto/anytype-heart/blob/v0.42.4/makefiles/vars.mk#L8 +tantivy_go_version=$( + curl "https://raw.githubusercontent.com/anyproto/anytype-heart/refs/tags/v$middleware_version/go.mod" \ + ${GITHUB_TOKEN:+--user ":$GITHUB_TOKEN"} \ + --silent \ + | grep github.com/anyproto/tantivy-go \ + | cut --delimiter=' ' --field=2 +) + +tantivy_go_version=${tantivy_go_version//v} + +nix-update tantivy-go --version "$tantivy_go_version" --generate-lockfile +nix-update anytype-heart --version "$middleware_version" +update-source-version anytype --ignore-same-version --source-key=locales --rev="$locales_rev" +nix-update anytype --version "$anytype_version"