gh-copilot: add auto-updating

+45
+2
pkgs/by-name/gh/gh-copilot/package.nix
··· 46 runHook postInstall 47 ''; 48 49 meta = { 50 changelog = "https://github.com/github/gh-copilot/releases/tag/v${finalAttrs.version}"; 51 description = "Ask for assistance right in your terminal.";
··· 46 runHook postInstall 47 ''; 48 49 + passthru.updateScript = ./update.sh; 50 + 51 meta = { 52 changelog = "https://github.com/github/gh-copilot/releases/tag/v${finalAttrs.version}"; 53 description = "Ask for assistance right in your terminal.";
+43
pkgs/by-name/gh/gh-copilot/update.sh
···
··· 1 + #!/usr/bin/env nix-shell 2 + #!nix-shell -i bash -p curl jq common-updater-scripts nix-prefetch 3 + 4 + set -euo pipefail 5 + set -x 6 + 7 + ROOT="$(dirname "$(readlink -f "$0")")" 8 + NIX_DRV="$ROOT/package.nix" 9 + if [ ! -f "$NIX_DRV" ]; then 10 + echo "ERROR: cannot find gh-copilot in $ROOT" 11 + exit 1 12 + fi 13 + 14 + fetch_arch() { 15 + VER="$1"; ARCH="$2" 16 + URL="https://github.com/github/gh-copilot/releases/download/v${VER}/${ARCH}"; 17 + nix-prefetch "{ stdenv, fetchzip }: 18 + stdenv.mkDerivation rec { 19 + pname = \"vere\"; version = \"${VER}\"; 20 + src = fetchurl { url = \"$URL\"; }; 21 + } 22 + " 23 + } 24 + 25 + replace_sha() { 26 + # https://stackoverflow.com/a/38470458/22235705 27 + sed -rziE "s@($1[^\n]*\n[^\n]*hash = )\"sha256-.{44}\";@\1\"$2\";@" "$NIX_DRV" 28 + } 29 + 30 + VERE_VER=$(curl https://api.github.com/repos/github/gh-copilot/releases/latest | jq .tag_name) 31 + VERE_VER=$(echo $VERE_VER | sed -e 's/^"v//' -e 's/"$//') # transform "v1.0.2" into 1.0.2 32 + 33 + VERE_LINUX_X64_SHA256=$(fetch_arch "$VERE_VER" "linux-amd64") 34 + VERE_LINUX_AARCH64_SHA256=$(fetch_arch "$VERE_VER" "linux-arm64") 35 + VERE_DARWIN_X64_SHA256=$(fetch_arch "$VERE_VER" "darwin-amd64") 36 + VERE_DARWIN_AARCH64_SHA256=$(fetch_arch "$VERE_VER" "darwin-arm64") 37 + 38 + sed -i "s/version = \".*\"/version = \"$VERE_VER\"/" "$NIX_DRV" 39 + 40 + replace_sha "linux-amd64" "$VERE_LINUX_X64_SHA256" 41 + replace_sha "linux-arm64" "$VERE_LINUX_AARCH64_SHA256" 42 + replace_sha "darwin-amd64" "$VERE_DARWIN_X64_SHA256" 43 + replace_sha "darwin-arm64" "$VERE_DARWIN_AARCH64_SHA256"