#!/usr/bin/env bash # ───────────────────────────────────────────────────────────────────────────── # install.sh — Installeur CatrustDB Community (Linux/macOS) # # Usage : # curl -fsSL https://catrust.eu/releases/install.sh | bash # bash <(curl -fsSL https://catrust.eu/releases/install.sh) --version 1.0.0 # ───────────────────────────────────────────────────────────────────────────── set -euo pipefail CATRUST_VERSION="${CATRUST_VERSION:-1.0.0}" CATRUST_BASE_URL="${CATRUST_BASE_URL:-https://catrust.eu/releases}" INSTALL_DIR="${INSTALL_DIR:-${HOME}/.local/bin}" # ── Détection de la plateforme ───────────────────────────────────────────── detect_platform() { local os arch os="$(uname -s)" arch="$(uname -m)" case "${os}" in Linux) case "${arch}" in x86_64) echo "x86_64-linux" ;; aarch64) echo "aarch64-linux" ;; *) echo "UNSUPPORTED_ARCH:${arch}" ;; esac ;; Darwin) case "${arch}" in x86_64) echo "x86_64-macos" ;; arm64) echo "aarch64-macos" ;; *) echo "UNSUPPORTED_ARCH:${arch}" ;; esac ;; *) echo "UNSUPPORTED_OS:${os}" ;; esac } PLATFORM="$(detect_platform)" if [[ "${PLATFORM}" == UNSUPPORTED* ]]; then echo "❌ Plateforme non supportée : ${PLATFORM}" echo " Voir https://catrust.eu/releases pour les releases disponibles." exit 1 fi TARBALL="catrust-v${CATRUST_VERSION}-${PLATFORM}.tar.gz" DOWNLOAD_URL="${CATRUST_BASE_URL}/v${CATRUST_VERSION}/${TARBALL}" CHECKSUM_URL="${CATRUST_BASE_URL}/v${CATRUST_VERSION}/catrust-v${CATRUST_VERSION}-checksums.txt" echo "┌─────────────────────────────────────────────┐" echo "│ CatrustDB Community v${CATRUST_VERSION} — Installer │" echo "└─────────────────────────────────────────────┘" echo "" echo " Plateforme : ${PLATFORM}" echo " Version : ${CATRUST_VERSION}" echo " Destination: ${INSTALL_DIR}" echo "" # ── Vérification des dépendances ────────────────────────────────────────── for cmd in curl tar; do if ! command -v "${cmd}" &>/dev/null; then echo "❌ Dépendance manquante : ${cmd}" exit 1 fi done # ── Téléchargement ──────────────────────────────────────────────────────── TMPDIR_INSTALL="$(mktemp -d)" trap 'rm -rf "${TMPDIR_INSTALL}"' EXIT echo "[1/4] Téléchargement de ${TARBALL} ..." curl -fsSL --progress-bar \ -o "${TMPDIR_INSTALL}/${TARBALL}" \ "${DOWNLOAD_URL}" # ── Vérification du checksum ────────────────────────────────────────────── echo "[2/4] Vérification de l'intégrité (SHA256) ..." EXPECTED_HASH="$(curl -fsSL "${CHECKSUM_URL}" | grep "${TARBALL}" | awk '{print $1}')" if [[ -z "${EXPECTED_HASH}" ]]; then echo " ⚠ Checksum introuvable sur le serveur — vérification ignorée" else ACTUAL_HASH="$(sha256sum "${TMPDIR_INSTALL}/${TARBALL}" | awk '{print $1}')" if [[ "${ACTUAL_HASH}" != "${EXPECTED_HASH}" ]]; then echo "❌ Checksum invalide !" echo " Attendu : ${EXPECTED_HASH}" echo " Calculé : ${ACTUAL_HASH}" echo " L'archive est peut-être corrompue ou falsifiée." exit 1 fi echo " ✓ Checksum OK : ${ACTUAL_HASH:0:16}..." fi # ── Extraction ──────────────────────────────────────────────────────────── echo "[3/4] Extraction ..." tar -xzf "${TMPDIR_INSTALL}/${TARBALL}" -C "${TMPDIR_INSTALL}" PKG_DIR="${TMPDIR_INSTALL}/catrust-v${CATRUST_VERSION}-${PLATFORM}" # ── Installation ───────────────────────────────────────────────────────── echo "[4/4] Installation dans ${INSTALL_DIR} ..." mkdir -p "${INSTALL_DIR}" for binary in catrust catrustdb-server; do if [[ -f "${PKG_DIR}/${binary}" ]]; then cp "${PKG_DIR}/${binary}" "${INSTALL_DIR}/${binary}" chmod +x "${INSTALL_DIR}/${binary}" echo " ✓ ${binary} installé" fi done # Shell completions if command -v bash &>/dev/null; then mkdir -p "${HOME}/.bash_completion.d" "${INSTALL_DIR}/catrust" completions bash \ > "${HOME}/.bash_completion.d/catrust" 2>/dev/null || true fi if command -v zsh &>/dev/null; then mkdir -p "${HOME}/.zsh/completions" "${INSTALL_DIR}/catrust" completions zsh \ > "${HOME}/.zsh/completions/_catrust" 2>/dev/null || true fi # ── Vérification finale ────────────────────────────────────────────────── echo "" echo "╔══════════════════════════════════════════════╗" echo "║ ✓ CatrustDB Community v${CATRUST_VERSION} installé ! ║" echo "╚══════════════════════════════════════════════╝" echo "" echo " Binaires : ${INSTALL_DIR}/catrust" echo " ${INSTALL_DIR}/catrustdb-server" echo "" # Vérifie que INSTALL_DIR est dans le PATH if [[ ":${PATH}:" != *":${INSTALL_DIR}:"* ]]; then echo " 📌 Ajoutez cette ligne à votre ~/.bashrc ou ~/.zshrc :" echo "" echo " export PATH=\"\${HOME}/.local/bin:\${PATH}\"" echo "" fi echo " Premiers pas :" echo " catrust --version" echo " catrust init --name mon-projet" echo " catrust serve" echo "" echo " Documentation : https://catrust.eu"