diff options
Diffstat (limited to 'pkgs/by-name/py/pyright/update.sh')
-rwxr-xr-x | pkgs/by-name/py/pyright/update.sh | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/pkgs/by-name/py/pyright/update.sh b/pkgs/by-name/py/pyright/update.sh new file mode 100755 index 000000000000..b0a2b2a11184 --- /dev/null +++ b/pkgs/by-name/py/pyright/update.sh @@ -0,0 +1,44 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p curl gnused common-updater-scripts jq prefetch-npm-deps +set -euo pipefail + +version=$(curl ${GITHUB_TOKEN:+" -u \":$GITHUB_TOKEN\""} -s https://api.github.com/repos/microsoft/pyright/releases/latest | jq -r '.tag_name | sub("^v"; "")') + +update-source-version pyright "$version" + +root="$(dirname "$(readlink -f "$0")")" +FILE_PATH="$root/package.nix" +REPO_URL_PREFIX="https://github.com/microsoft/pyright/raw" +TEMP_DIR=$(mktemp -d) + +trap 'rm -rf "$TEMP_DIR"' EXIT + +# Function to download `package-lock.json` for a given source path and update hash +update_hash() { + local source_root_path="$1" + local existing_hash="$2" + + # Formulate download URL + local download_url="${REPO_URL_PREFIX}/${version}${source_root_path}/package-lock.json" + + # Download package-lock.json to temporary directory + curl -fsSL -o "${TEMP_DIR}/package-lock.json" "$download_url" + + # Calculate the new hash + local new_hash + new_hash=$(prefetch-npm-deps "${TEMP_DIR}/package-lock.json") + + # Update npmDepsHash in the original file + sed -i "s|$existing_hash|${new_hash}|" "$FILE_PATH" +} + +while IFS= read -r source_root_line; do + [[ "$source_root_line" =~ sourceRoot ]] || continue + source_root_path=$(echo "$source_root_line" | sed -e 's/^.*"${src.name}\(.*\)";.*$/\1/') + + # Extract the current npmDepsHash for this sourceRoot + existing_hash=$(grep -A1 "$source_root_line" "$FILE_PATH" | grep 'npmDepsHash' | sed -e 's/^.*npmDepsHash = "\(.*\)";$/\1/') + + # Call the function to download and update the hash + update_hash "$source_root_path" "$existing_hash" +done < "$FILE_PATH" |