diff --git a/bin/install-latest-linux.sh b/bin/install-latest-linux.sh deleted file mode 100755 index da516c9ae..000000000 --- a/bin/install-latest-linux.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env bash -set -eo pipefail - -# Install the latest version of the Linux binary -DOWNLOAD_URL="$(curl -s https://api.github.com/repos/brevdev/brev-cli/releases/latest | grep "browser_download_url.*linux.*amd64" | cut -d '"' -f 4)" - -# Create temporary directory and ensure cleanup -TMP_DIR="$(mktemp -d)" -trap 'rm -rf "${TMP_DIR}"' EXIT - -# Download the latest release -curl -L "${DOWNLOAD_URL}" -o "${TMP_DIR}/$(basename "${DOWNLOAD_URL}")" - -# Find and extract the archive -ARCHIVE_FILE="$(find "${TMP_DIR}" -name "brev*.tar.gz" -type f)" -tar -xzf "${ARCHIVE_FILE}" -C "${TMP_DIR}" - -# Install the binary to system location -sudo mv "${TMP_DIR}/brev" /usr/local/bin/brev -sudo chmod +x /usr/local/bin/brev - diff --git a/bin/install-latest.sh b/bin/install-latest.sh index 16f5c6343..df223523d 100755 --- a/bin/install-latest.sh +++ b/bin/install-latest.sh @@ -9,12 +9,21 @@ case "${ARCH}" in aarch64) ARCH="arm64" ;; esac -# Get the appropriate download URL for this platform -DOWNLOAD_URL="$(curl -s https://api.github.com/repos/brevdev/brev-cli/releases/latest | grep "browser_download_url.*${OS}.*${ARCH}" | cut -d '"' -f 4)" +# Fetch release metadata from GitHub API +API_RESPONSE="$(curl -sf ${GITHUB_TOKEN:+-H "Authorization: token ${GITHUB_TOKEN}"} https://api.github.com/repos/brevdev/brev-cli/releases/latest)" || { + echo "Error: Failed to fetch release info from GitHub API." >&2 + echo "This is often caused by rate limiting when many requests come from the same IP." >&2 + echo "If you are using a VPN, try turning it off and running this script again." >&2 + echo "You can also set GITHUB_TOKEN to avoid rate limits." >&2 + echo "For more details, see: https://docs.github.com/rest/overview/resources-in-the-rest-api#rate-limiting" >&2 + exit 1 +} -# Verify we found a suitable release +# Extract the download URL for this platform +DOWNLOAD_URL="$(echo "${API_RESPONSE}" | grep "browser_download_url.*${OS}.*${ARCH}" | cut -d '"' -f 4 || true)" if [ -z "${DOWNLOAD_URL}" ]; then echo "Error: Could not find release for ${OS} ${ARCH}" >&2 + echo "GitHub API response (truncated): ${API_RESPONSE:0:200}" >&2 exit 1 fi diff --git a/scripts/install-agent-skill.sh b/scripts/install-agent-skill.sh index e8597c2e3..247a64ca3 100755 --- a/scripts/install-agent-skill.sh +++ b/scripts/install-agent-skill.sh @@ -116,12 +116,21 @@ done rm -rf "$TMPDIR" # Resolve commit SHA and write .version file -COMMIT_SHA=$(curl -fsSL "https://api.github.com/repos/$REPO/commits/$BRANCH" 2>/dev/null | grep '"sha"' | head -1 | sed 's/.*"sha": *"\([^"]*\)".*/\1/') -if [[ -n "$COMMIT_SHA" ]]; then - for dir in "${INSTALL_DIRS[@]}"; do - printf 'branch=%s\ncommit=%s\n' "$BRANCH" "$COMMIT_SHA" > "$dir/.version" - done - echo -e " ${GREEN}✓${NC} .version (${COMMIT_SHA:0:12})" +VERSION_RESPONSE=$(curl -fsSL "https://api.github.com/repos/$REPO/commits/$BRANCH" 2>&1) || true +if echo "$VERSION_RESPONSE" | grep -q "API rate limit exceeded"; then + echo -e " ${YELLOW}⚠${NC} .version (skipped — GitHub API rate limit exceeded)" + echo -e " ${YELLOW}If you are using a VPN, try turning it off and running this script again.${NC}" + echo -e " ${YELLOW}See: https://docs.github.com/rest/overview/resources-in-the-rest-api#rate-limiting${NC}" +else + COMMIT_SHA=$(echo "$VERSION_RESPONSE" | grep '"sha"' | head -1 | sed 's/.*"sha": *"\([^"]*\)".*/\1/' || true) + if [[ -n "$COMMIT_SHA" ]]; then + for dir in "${INSTALL_DIRS[@]}"; do + printf 'branch=%s\ncommit=%s\n' "$BRANCH" "$COMMIT_SHA" > "$dir/.version" + done + echo -e " ${GREEN}✓${NC} .version (${COMMIT_SHA:0:12})" + else + echo -e " ${YELLOW}⚠${NC} .version (could not resolve commit SHA)" + fi fi echo ""