anytype: add custom update script

+63
+2
pkgs/by-name/an/anytype/package.nix
··· 114 114 }) 115 115 ]; 116 116 117 + passthru.updateScript = ./update.sh; 118 + 117 119 meta = { 118 120 description = "P2P note-taking tool"; 119 121 homepage = "https://anytype.io/";
+61
pkgs/by-name/an/anytype/update.sh
··· 1 + #!/usr/bin/env nix-shell 2 + #!nix-shell -i bash -p common-updater-scripts coreutils curl jq nix-update 3 + 4 + set -euo pipefail 5 + 6 + anytype_version=null 7 + release_page=1 8 + 9 + # Anytype often has many pre-releases between releases, which can span multiple pages 10 + while [ "$anytype_version" = 'null' ]; do 11 + readarray -t release < <( 12 + curl "https://api.github.com/repos/anyproto/anytype-ts/releases?page=$release_page" \ 13 + ${GITHUB_TOKEN:+--user ":$GITHUB_TOKEN"} \ 14 + --silent \ 15 + | jq --raw-output ' 16 + map(select( 17 + (.prerelease == false) and 18 + (.tag_name | test("alpha|beta") | not) 19 + )) | .[0] | .tag_name, .created_at 20 + ' 21 + ) 22 + anytype_version=${release[0]//v} 23 + anytype_release_date=${release[1]} 24 + release_page=$((release_page+1)) 25 + done 26 + 27 + if [ "$UPDATE_NIX_OLD_VERSION" = "$anytype_version" ]; then 28 + echo "Already up to date!" 29 + exit 0 30 + fi 31 + 32 + # https://github.com/anyproto/anytype-ts/blob/v0.49.2/electron/hook/locale.js 33 + locales_rev=$( 34 + curl "https://api.github.com/repos/anyproto/l10n-anytype-ts/commits?until=$anytype_release_date&per_page=1" \ 35 + ${GITHUB_TOKEN:+--user ":$GITHUB_TOKEN"} \ 36 + --silent \ 37 + | jq --raw-output '.[0].sha' 38 + ) 39 + 40 + # https://github.com/anyproto/anytype-ts/blob/v0.49.2/update.sh 41 + middleware_version=$( 42 + curl "https://raw.githubusercontent.com/anyproto/anytype-ts/refs/tags/v$anytype_version/middleware.version" \ 43 + ${GITHUB_TOKEN:+--user ":$GITHUB_TOKEN"} \ 44 + --silent 45 + ) 46 + 47 + # https://github.com/anyproto/anytype-heart/blob/v0.42.4/makefiles/vars.mk#L8 48 + tantivy_go_version=$( 49 + curl "https://raw.githubusercontent.com/anyproto/anytype-heart/refs/tags/v$middleware_version/go.mod" \ 50 + ${GITHUB_TOKEN:+--user ":$GITHUB_TOKEN"} \ 51 + --silent \ 52 + | grep github.com/anyproto/tantivy-go \ 53 + | cut --delimiter=' ' --field=2 54 + ) 55 + 56 + tantivy_go_version=${tantivy_go_version//v} 57 + 58 + nix-update tantivy-go --version "$tantivy_go_version" --generate-lockfile 59 + nix-update anytype-heart --version "$middleware_version" 60 + update-source-version anytype --ignore-same-version --source-key=locales --rev="$locales_rev" 61 + nix-update anytype --version "$anytype_version"