75 lines
2.5 KiB
Bash
Executable File
75 lines
2.5 KiB
Bash
Executable File
#!/usr/bin/env nix-shell
|
|
#!nix-shell -i bash -p curl jq nix coreutils
|
|
|
|
set -euo pipefail
|
|
|
|
MANIFEST_URL="https://desktop-release.q.us-east-1.amazonaws.com/latest/manifest.json"
|
|
PACKAGE_DIR="$(dirname "$0")"
|
|
PACKAGE_NIX="$PACKAGE_DIR/package.nix"
|
|
|
|
manifest=$(curl -fsSL "$MANIFEST_URL")
|
|
latest_version=$(echo "$manifest" | jq -r '.version')
|
|
current_version=$(grep -Po '^\s+version\s*=\s*"\K[0-9.]+' "$PACKAGE_NIX" | head -1)
|
|
|
|
if [[ "$latest_version" == "$current_version" ]]; then
|
|
echo "kiro-cli is already up to date at version $current_version"
|
|
exit 0
|
|
fi
|
|
|
|
echo "Updating kiro-cli from $current_version to $latest_version"
|
|
|
|
get_linux_hash() {
|
|
local arch="$1"
|
|
echo "$manifest" | jq -r --arg arch "$arch" '
|
|
.packages[] |
|
|
select(.os == "linux" and .fileType == "tarGz" and .variant == "headless" and .architecture == $arch and (.targetTriple | contains("musl") | not)) |
|
|
.sha256
|
|
'
|
|
}
|
|
|
|
get_darwin_hash() {
|
|
echo "$manifest" | jq -r '
|
|
.packages[] |
|
|
select(.os == "macos" and .fileType == "dmg") |
|
|
.sha256
|
|
'
|
|
}
|
|
|
|
hex_to_sri() {
|
|
local hex="$1"
|
|
nix hash convert --to sri --hash-algo sha256 "$hex"
|
|
}
|
|
|
|
x86_64_linux_hex=$(get_linux_hash "x86_64")
|
|
aarch64_linux_hex=$(get_linux_hash "aarch64")
|
|
darwin_hex=$(get_darwin_hash)
|
|
|
|
if [[ -z "$x86_64_linux_hex" || -z "$aarch64_linux_hex" || -z "$darwin_hex" ]]; then
|
|
echo "Error: Could not find all hashes in manifest"
|
|
echo " x86_64-linux: $x86_64_linux_hex"
|
|
echo " aarch64-linux: $aarch64_linux_hex"
|
|
echo " darwin: $darwin_hex"
|
|
exit 1
|
|
fi
|
|
|
|
x86_64_linux_hash=$(hex_to_sri "$x86_64_linux_hex")
|
|
aarch64_linux_hash=$(hex_to_sri "$aarch64_linux_hex")
|
|
darwin_hash=$(hex_to_sri "$darwin_hex")
|
|
|
|
echo "x86_64-linux hash: $x86_64_linux_hash"
|
|
echo "aarch64-linux hash: $aarch64_linux_hash"
|
|
echo "darwin hash: $darwin_hash"
|
|
|
|
# Get current hashes from package.nix
|
|
current_x86_hash=$(grep -A2 'x86_64-linux = fetchurl' "$PACKAGE_NIX" | grep -Po 'hash = "\K[^"]+')
|
|
current_aarch64_hash=$(grep -A2 'aarch64-linux = fetchurl' "$PACKAGE_NIX" | grep -Po 'hash = "\K[^"]+')
|
|
current_darwin_hash=$(grep -A2 'aarch64-darwin = fetchurl' "$PACKAGE_NIX" | grep -Po 'hash = "\K[^"]+')
|
|
|
|
# Update version and hashes
|
|
sed -i "s|version = \"$current_version\"|version = \"$latest_version\"|" "$PACKAGE_NIX"
|
|
sed -i "s|$current_x86_hash|$x86_64_linux_hash|" "$PACKAGE_NIX"
|
|
sed -i "s|$current_aarch64_hash|$aarch64_linux_hash|" "$PACKAGE_NIX"
|
|
sed -i "s|$current_darwin_hash|$darwin_hash|" "$PACKAGE_NIX"
|
|
|
|
echo "Updated kiro-cli to version $latest_version"
|