|
2 | 2 | set -e |
3 | 3 |
|
4 | 4 | # Configuration |
5 | | -# Binaries are hosted on GitHub Releases |
6 | | -VERSION="v0.1.3" |
7 | | -BASE_URL="https://github.com/SuperagenticAI/superqode/releases/download/${VERSION}" |
8 | | -BINARY_NAME="superqode" |
9 | | -INSTALL_DIR="/usr/local/bin" |
| 5 | +VERSION="0.1.4" |
| 6 | +APP_NAME="superqode" |
| 7 | +INSTALL_LIB_DIR="$HOME/.local/lib/${APP_NAME}" |
| 8 | +INSTALL_BIN_DIR="$HOME/.local/bin" |
10 | 9 |
|
11 | 10 | # Detect OS and Architecture |
12 | 11 | OS="$(uname -s)" |
13 | 12 | ARCH="$(uname -m)" |
14 | 13 |
|
15 | 14 | case "$OS" in |
16 | | - Linux) |
17 | | - PLATFORM="linux" |
18 | | - ;; |
19 | | - Darwin) |
20 | | - PLATFORM="macos" |
21 | | - ;; |
22 | | - *) |
23 | | - echo "Unsupported operating system: $OS" |
24 | | - exit 1 |
25 | | - ;; |
| 15 | + Linux) PLATFORM="linux" ;; |
| 16 | + Darwin) PLATFORM="macos" ;; |
| 17 | + *) echo "Unsupported OS: $OS"; exit 1 ;; |
26 | 18 | esac |
27 | 19 |
|
28 | 20 | case "$ARCH" in |
29 | | - x86_64) |
30 | | - ARCH_TAG="x86_64" |
31 | | - ;; |
32 | | - aarch64|arm64) |
33 | | - ARCH_TAG="arm64" |
34 | | - ;; |
35 | | - *) |
36 | | - echo "Unsupported architecture: $ARCH" |
37 | | - exit 1 |
38 | | - ;; |
| 21 | + x86_64) ARCH_TAG="x86_64" ;; |
| 22 | + aarch64|arm64) ARCH_TAG="arm64" ;; |
| 23 | + *) echo "Unsupported architecture: $ARCH"; exit 1 ;; |
39 | 24 | esac |
40 | 25 |
|
41 | | -ASSET_NAME="${BINARY_NAME}-${PLATFORM}-${ARCH_TAG}.tar.gz" |
42 | | -DOWNLOAD_URL="${BASE_URL}/${ASSET_NAME}" |
| 26 | +ARCHIVE_NAME="${APP_NAME}-${VERSION}-${PLATFORM}-${ARCH_TAG}.tar.gz" |
| 27 | +DOWNLOAD_URL="https://github.com/SuperagenticAI/superqode/releases/download/v${VERSION}/${ARCHIVE_NAME}" |
| 28 | + |
| 29 | +# --- Installation Logic --- |
43 | 30 |
|
44 | 31 | echo "Detected platform: ${PLATFORM}-${ARCH_TAG}" |
45 | | -echo "Downloading from: ${DOWNLOAD_URL}" |
46 | 32 |
|
47 | 33 | # Create temp directory |
48 | 34 | TMP_DIR="$(mktemp -d)" |
49 | 35 | trap 'rm -rf -- "$TMP_DIR"' EXIT |
50 | 36 |
|
51 | | -# Download |
52 | | -curl -fsSL "$DOWNLOAD_URL" -o "${TMP_DIR}/${ASSET_NAME}" |
| 37 | +# Check if archive exists locally (for testing) or download it |
| 38 | +if [ -f "release_builds/${ARCHIVE_NAME}" ]; then |
| 39 | + echo "Using local archive for installation..." |
| 40 | + cp "release_builds/${ARCHIVE_NAME}" "${TMP_DIR}/" |
| 41 | +else |
| 42 | + echo "Downloading from: ${DOWNLOAD_URL}" |
| 43 | + curl -fsSL "$DOWNLOAD_URL" -o "${TMP_DIR}/${ARCHIVE_NAME}" |
| 44 | +fi |
53 | 45 |
|
54 | 46 | # Extract |
55 | 47 | echo "Extracting..." |
56 | | -tar -xzf "${TMP_DIR}/${ASSET_NAME}" -C "$TMP_DIR" |
| 48 | +tar -xzf "${TMP_DIR}/${ARCHIVE_NAME}" -C "$TMP_DIR" |
57 | 49 |
|
58 | 50 | # Install |
59 | | -echo "Installing to ${INSTALL_DIR}..." |
60 | | -if [ -w "$INSTALL_DIR" ]; then |
61 | | - mv "${TMP_DIR}/${BINARY_NAME}" "${INSTALL_DIR}/${BINARY_NAME}" |
62 | | -else |
63 | | - echo "Sudo required to install to ${INSTALL_DIR}" |
64 | | - sudo mv "${TMP_DIR}/${BINARY_NAME}" "${INSTALL_DIR}/${BINARY_NAME}" |
| 51 | +echo "Installing to ${INSTALL_LIB_DIR}..." |
| 52 | +rm -rf "$INSTALL_LIB_DIR" |
| 53 | +mkdir -p "$(dirname "$INSTALL_LIB_DIR")" |
| 54 | +mv "${TMP_DIR}/${APP_NAME}" "$INSTALL_LIB_DIR" |
| 55 | + |
| 56 | +# Create symlink |
| 57 | +echo "Creating symlink in ${INSTALL_BIN_DIR}..." |
| 58 | +mkdir -p "$INSTALL_BIN_DIR" |
| 59 | +ln -sf "${INSTALL_LIB_DIR}/${APP_NAME}" "${INSTALL_BIN_DIR}/${APP_NAME}" |
| 60 | + |
| 61 | +# Verify PATH |
| 62 | +if [[ ":$PATH:" != ".*:${INSTALL_BIN_DIR}:"* ]]; then |
| 63 | + echo "" |
| 64 | + echo "⚠️ Warning: ${INSTALL_BIN_DIR} is not in your PATH." |
| 65 | + echo "Add it to your shell config (e.g., ~/.bashrc or ~/.zshrc):" |
| 66 | + echo " export PATH=\" |
| 67 | +.local/bin:$PATH\"" |
| 68 | + echo "" |
65 | 69 | fi |
66 | 70 |
|
67 | | -# Verify |
68 | | -if command -v "$BINARY_NAME" >/dev/null; then |
69 | | - echo "✅ Successfully installed $("$BINARY_NAME" --version)" |
70 | | - echo "Run '$BINARY_NAME' to get started!" |
| 71 | +# Verify installation |
| 72 | +if command -v "$APP_NAME" >/dev/null; then |
| 73 | + echo "✅ Successfully installed $($APP_NAME --version)" |
| 74 | + echo "Run '$APP_NAME' to get started!" |
71 | 75 | else |
72 | | - echo "❌ Installation failed." |
73 | | - exit 1 |
| 76 | + # Check if we can run it via absolute path |
| 77 | + if [ -x "${INSTALL_BIN_DIR}/${APP_NAME}" ]; then |
| 78 | + echo "✅ Successfully installed to ${INSTALL_BIN_DIR}/${APP_NAME}" |
| 79 | + echo "Note: You need to add ${INSTALL_BIN_DIR} to your PATH." |
| 80 | + else |
| 81 | + echo "❌ Installation failed." |
| 82 | + exit 1 |
| 83 | + fi |
74 | 84 | fi |
0 commit comments