|
| 1 | +#!/bin/sh |
| 2 | +set -e |
| 3 | + |
| 4 | +REPO="Gladium-AI/flare-cli" |
| 5 | +INSTALL_DIR="${INSTALL_DIR:-$HOME/.local/bin}" |
| 6 | +BINARY="flare" |
| 7 | + |
| 8 | +# Detect OS. |
| 9 | +OS="$(uname -s)" |
| 10 | +case "$OS" in |
| 11 | + Linux*) GOOS="linux" ;; |
| 12 | + Darwin*) GOOS="darwin" ;; |
| 13 | + *) echo "Unsupported OS: $OS" >&2; exit 1 ;; |
| 14 | +esac |
| 15 | + |
| 16 | +# Detect architecture. |
| 17 | +ARCH="$(uname -m)" |
| 18 | +case "$ARCH" in |
| 19 | + x86_64|amd64) GOARCH="amd64" ;; |
| 20 | + arm64|aarch64) GOARCH="arm64" ;; |
| 21 | + *) echo "Unsupported architecture: $ARCH" >&2; exit 1 ;; |
| 22 | +esac |
| 23 | + |
| 24 | +echo "Detected platform: ${GOOS}/${GOARCH}" |
| 25 | + |
| 26 | +# Get the latest release tag. |
| 27 | +if command -v curl >/dev/null 2>&1; then |
| 28 | + TAG="$(curl -fsSL "https://api.github.com/repos/${REPO}/releases/latest" | grep '"tag_name"' | head -1 | sed 's/.*"tag_name": *"//;s/".*//')" |
| 29 | +elif command -v wget >/dev/null 2>&1; then |
| 30 | + TAG="$(wget -qO- "https://api.github.com/repos/${REPO}/releases/latest" | grep '"tag_name"' | head -1 | sed 's/.*"tag_name": *"//;s/".*//')" |
| 31 | +else |
| 32 | + echo "Error: curl or wget is required" >&2 |
| 33 | + exit 1 |
| 34 | +fi |
| 35 | + |
| 36 | +if [ -z "$TAG" ]; then |
| 37 | + echo "Error: could not determine latest release" >&2 |
| 38 | + exit 1 |
| 39 | +fi |
| 40 | + |
| 41 | +echo "Latest release: ${TAG}" |
| 42 | + |
| 43 | +ARCHIVE="${BINARY}-${TAG}-${GOOS}-${GOARCH}.tar.gz" |
| 44 | +URL="https://github.com/${REPO}/releases/download/${TAG}/${ARCHIVE}" |
| 45 | + |
| 46 | +# Download and extract. |
| 47 | +TMPDIR="$(mktemp -d)" |
| 48 | +trap 'rm -rf "$TMPDIR"' EXIT |
| 49 | + |
| 50 | +echo "Downloading ${URL}..." |
| 51 | +if command -v curl >/dev/null 2>&1; then |
| 52 | + curl -fsSL "$URL" -o "${TMPDIR}/${ARCHIVE}" |
| 53 | +else |
| 54 | + wget -q "$URL" -O "${TMPDIR}/${ARCHIVE}" |
| 55 | +fi |
| 56 | + |
| 57 | +tar -xzf "${TMPDIR}/${ARCHIVE}" -C "$TMPDIR" |
| 58 | + |
| 59 | +# Install. |
| 60 | +mkdir -p "$INSTALL_DIR" |
| 61 | +mv "${TMPDIR}/${BINARY}" "${INSTALL_DIR}/${BINARY}" |
| 62 | +chmod +x "${INSTALL_DIR}/${BINARY}" |
| 63 | + |
| 64 | +echo "Installed ${BINARY} ${TAG} to ${INSTALL_DIR}/${BINARY}" |
| 65 | + |
| 66 | +# Check if INSTALL_DIR is in PATH. |
| 67 | +case ":$PATH:" in |
| 68 | + *":${INSTALL_DIR}:"*) ;; |
| 69 | + *) |
| 70 | + echo "" |
| 71 | + echo "Add ${INSTALL_DIR} to your PATH:" |
| 72 | + echo " export PATH=\"${INSTALL_DIR}:\$PATH\"" |
| 73 | + ;; |
| 74 | +esac |
0 commit comments