mirror of
https://github.com/oslook/cursor-ai-downloads.git
synced 2025-09-27 03:35:57 +08:00
78 lines
2.7 KiB
Bash
Executable File
78 lines
2.7 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Check if a complete URL is provided
|
|
if [ -z "$1" ]; then
|
|
echo "Usage: $0 <full_appimage_download_url>"
|
|
echo "Example: $0 https://downloads.cursor.com/production/.../Cursor-1.5.9-x86_64.AppImage"
|
|
exit 1
|
|
fi
|
|
|
|
DOWNLOAD_URL=$1
|
|
OUTPUT_DIR="cursor_products"
|
|
EXTRACT_DIR="temp_cursor_extract"
|
|
|
|
# Extract the filename from the URL
|
|
APPIMAGE_FILENAME=$(basename "$DOWNLOAD_URL")
|
|
|
|
# Extract the version number from the filename using a regular expression
|
|
VERSION=$(echo "$APPIMAGE_FILENAME" | sed -n 's/.*-\([0-9.]*\)-x86_64.AppImage/\1/p')
|
|
|
|
# Check if the version was successfully extracted
|
|
if [ -z "$VERSION" ]; then
|
|
echo "Error: Could not parse version number from the filename. Please ensure the URL points to a valid AppImage file."
|
|
exit 1
|
|
fi
|
|
|
|
echo "Attempting to download file: $APPIMAGE_FILENAME"
|
|
echo "Download URL: $DOWNLOAD_URL"
|
|
echo "Parsed Version: $VERSION"
|
|
|
|
# 1. Download the AppImage file
|
|
if ! wget --quiet --output-document="${APPIMAGE_FILENAME}" "$DOWNLOAD_URL"; then
|
|
echo "Error: Download failed. Please check the URL or your network connection."
|
|
rm -f "${APPIMAGE_FILENAME}"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Download complete."
|
|
|
|
# 2. Create a temporary directory for extracted files
|
|
mkdir -p "$EXTRACT_DIR"
|
|
|
|
# 3. Extract the AppImage file contents
|
|
echo "Extracting AppImage package..."
|
|
chmod +x "$APPIMAGE_FILENAME"
|
|
if ! ./"$APPIMAGE_FILENAME" --appimage-extract > /dev/null; then
|
|
echo "Extraction failed. Attempting fallback with 'unsquashfs'."
|
|
# Fallback method: using unsquashfs (requires squashfs-tools)
|
|
if command -v unsquashfs &>/dev/null; then
|
|
unsquashfs -f -d "$EXTRACT_DIR" "$APPIMAGE_FILENAME"
|
|
else
|
|
echo "Error: Fallback method 'unsquashfs' is not available. Please ensure 'squashfs-tools' is installed."
|
|
rm -f "$APPIMAGE_FILENAME"
|
|
rmdir "$EXTRACT_DIR" > /dev/null 2>&1
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
# 4. Locate and copy the product.json file
|
|
# The extracted files are typically in a 'squashfs-root' directory
|
|
SOURCE_FILE="${EXTRACT_DIR}/squashfs-root/usr/share/cursor/resources/app/product.json"
|
|
if [ ! -f "$SOURCE_FILE" ]; then
|
|
# In some cases, files might be extracted to the root of the temp directory
|
|
SOURCE_FILE="./squashfs-root/usr/share/cursor/resources/app/product.json"
|
|
fi
|
|
|
|
if [ -f "$SOURCE_FILE" ]; then
|
|
mkdir -p "${OUTPUT_DIR}/${VERSION}"
|
|
cp "$SOURCE_FILE" "${OUTPUT_DIR}/${VERSION}/product.json"
|
|
echo "Successfully extracted and saved product.json for version ${VERSION}."
|
|
echo "File location: ${OUTPUT_DIR}/${VERSION}/product.json"
|
|
else
|
|
echo "Error: product.json file not found in the expected path inside the extracted AppImage."
|
|
fi
|
|
|
|
# 5. Clean up temporary files
|
|
rm -rf "$EXTRACT_DIR" "$APPIMAGE_FILENAME"
|
|
echo "Cleanup complete."
|