wire-desktop: Add updateScript

toonn cf36c820 d7b5e1a9

+106 -2
+20 -2
pkgs/by-name/wi/wire-desktop/package.nix
··· 71 hydraPlatforms = [ ]; 72 }; 73 74 linux = stdenv.mkDerivation rec { 75 - inherit pname version meta; 76 77 src = fetchurl { 78 url = "https://wire-app.wire.com/linux/debian/pool/main/Wire-${version}_amd64.deb"; ··· 147 }; 148 149 darwin = stdenv.mkDerivation { 150 - inherit pname version meta; 151 152 src = fetchurl { 153 url = "https://github.com/wireapp/wire-desktop/releases/download/macos%2F${version}/Wire.pkg";
··· 71 hydraPlatforms = [ ]; 72 }; 73 74 + passthru.updateScript = { 75 + command = [ 76 + ./update.sh 77 + ./. 78 + ]; 79 + supportedFeatures = [ "commit" ]; 80 + }; 81 + 82 linux = stdenv.mkDerivation rec { 83 + inherit 84 + pname 85 + version 86 + meta 87 + passthru 88 + ; 89 90 src = fetchurl { 91 url = "https://wire-app.wire.com/linux/debian/pool/main/Wire-${version}_amd64.deb"; ··· 160 }; 161 162 darwin = stdenv.mkDerivation { 163 + inherit 164 + pname 165 + version 166 + meta 167 + passthru 168 + ; 169 170 src = fetchurl { 171 url = "https://github.com/wireapp/wire-desktop/releases/download/macos%2F${version}/Wire.pkg";
+86
pkgs/by-name/wi/wire-desktop/update.sh
···
··· 1 + #!/usr/bin/env nix-shell 2 + #!nix-shell -i bash -p curl jq 3 + 4 + set -e 5 + 6 + cd $1 7 + 8 + releases=$(curl -L \ 9 + -H "Accept: application/vnd.github+json" \ 10 + -H "X-GitHub-Api-Version: 2022-11-28" \ 11 + "https://api.github.com/repos/wireapp/wire-desktop/releases" \ 12 + ) 13 + 14 + latest=$(jq --argjson suffix '{ "linux": ".deb", "macos": ".pkg" }' \ 15 + --slurpfile versions versions.json ' 16 + def platform_latest(platform): 17 + map(select(.tag_name | startswith(platform))) 18 + | max_by(.tag_name) 19 + | { version: .tag_name | ltrimstr(platform + "/") 20 + , url: .assets.[] 21 + | .browser_download_url 22 + | select(endswith($suffix.[platform])) 23 + }; 24 + 25 + . as $releases 26 + | $versions.[] as $old 27 + | $old 28 + | with_entries( .key as $key 29 + | { key: $key, value: $releases | platform_latest($key) } 30 + | select(.value.version != $old.[$key].version) 31 + ) 32 + ' <<< "$releases" 33 + ) 34 + 35 + urlHashes=$( 36 + printf '{ ' 37 + function entries () { 38 + local sep='' 39 + for url in $(jq --raw-output '.[].url' <<< "$latest"); do 40 + printf '%s"%s": "%s"\n' "$sep" "$url" \ 41 + "$(nix-hash --to-sri --type sha256 $(nix-prefetch-url $url))" 42 + sep=', ' 43 + done 44 + } 45 + entries 46 + printf '}' 47 + ) 48 + 49 + commit=$(jq --arg versionJSON "$(printf '%s/versions.json' "$1")" \ 50 + --slurpfile versions versions.json ' 51 + $versions.[] as $old 52 + | to_entries 53 + | map("\(.key) \($old.[.key].version) -> \(.value.version)") 54 + | join(", ") 55 + | [ if . == "" 56 + then empty 57 + else { attrPath: "wire-desktop" 58 + , oldVersion: "A" 59 + , newVersion: "B" 60 + , files: [ $versionJSON ] 61 + , commitMessage: "wire-desktop: \(.)" 62 + } 63 + end 64 + ] 65 + ' <<< "$latest" 66 + ) 67 + 68 + tempfile=$(mktemp) 69 + 70 + updated=$(jq --argjson hashes "$urlHashes" --slurpfile versions versions.json ' 71 + $versions.[] as $old 72 + | $old + map_values(with_entries(if .key == "url" 73 + then { key: "hash" 74 + , value: $hashes.[.value] 75 + } 76 + else . 77 + end 78 + ) 79 + ) 80 + ' <<< "$latest" > $tempfile 81 + ) 82 + 83 + mv $tempfile versions.json 84 + 85 + printf '%s' "$commit" 86 + exit 0