235 lines
7.3 KiB
Bash
235 lines
7.3 KiB
Bash
#!/bin/bash
|
|
# ========================================================
|
|
# OpenQode v1.01 - Automated Installer for Linux
|
|
# ========================================================
|
|
|
|
set -e
|
|
cd "$(dirname "$0")"
|
|
|
|
# Colors
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
CYAN='\033[0;36m'
|
|
BOLD='\033[1m'
|
|
NC='\033[0m'
|
|
|
|
echo ""
|
|
echo -e "${CYAN}========================================================"
|
|
echo " OpenQode v1.01 - AUTOMATED INSTALLATION WIZARD"
|
|
echo -e "========================================================${NC}"
|
|
echo ""
|
|
echo " This installer will set up everything you need:"
|
|
echo " - Node.js (if not installed)"
|
|
echo " - All dependencies"
|
|
echo " - Goose Ultra IDE"
|
|
echo ""
|
|
echo " Supported: Ubuntu, Debian, Fedora, Arch, and more"
|
|
echo ""
|
|
read -p "Press Enter to start installation..."
|
|
echo ""
|
|
|
|
# Detect package manager
|
|
detect_package_manager() {
|
|
if command -v apt-get &> /dev/null; then
|
|
PKG_MANAGER="apt"
|
|
PKG_INSTALL="sudo apt-get install -y"
|
|
PKG_UPDATE="sudo apt-get update"
|
|
elif command -v dnf &> /dev/null; then
|
|
PKG_MANAGER="dnf"
|
|
PKG_INSTALL="sudo dnf install -y"
|
|
PKG_UPDATE="sudo dnf check-update || true"
|
|
elif command -v yum &> /dev/null; then
|
|
PKG_MANAGER="yum"
|
|
PKG_INSTALL="sudo yum install -y"
|
|
PKG_UPDATE="sudo yum check-update || true"
|
|
elif command -v pacman &> /dev/null; then
|
|
PKG_MANAGER="pacman"
|
|
PKG_INSTALL="sudo pacman -S --noconfirm"
|
|
PKG_UPDATE="sudo pacman -Sy"
|
|
elif command -v zypper &> /dev/null; then
|
|
PKG_MANAGER="zypper"
|
|
PKG_INSTALL="sudo zypper install -y"
|
|
PKG_UPDATE="sudo zypper refresh"
|
|
else
|
|
PKG_MANAGER="unknown"
|
|
fi
|
|
}
|
|
|
|
detect_package_manager
|
|
echo -e "${BOLD}[INFO]${NC} Detected package manager: $PKG_MANAGER"
|
|
|
|
# ========================================================
|
|
# NODE.JS CHECK AND INSTALL
|
|
# ========================================================
|
|
echo ""
|
|
echo -e "${BOLD}[STEP 1/4]${NC} Checking Node.js..."
|
|
if ! command -v node &> /dev/null; then
|
|
echo -e "${YELLOW}[INFO]${NC} Node.js not found. Installing..."
|
|
|
|
case $PKG_MANAGER in
|
|
apt)
|
|
# Use NodeSource for latest LTS
|
|
echo -e "${YELLOW}[INFO]${NC} Setting up NodeSource repository..."
|
|
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
|
|
$PKG_INSTALL nodejs
|
|
;;
|
|
dnf|yum)
|
|
curl -fsSL https://rpm.nodesource.com/setup_lts.x | sudo bash -
|
|
$PKG_INSTALL nodejs
|
|
;;
|
|
pacman)
|
|
$PKG_INSTALL nodejs npm
|
|
;;
|
|
zypper)
|
|
$PKG_INSTALL nodejs npm
|
|
;;
|
|
*)
|
|
echo -e "${RED}[ERROR]${NC} Could not auto-install Node.js."
|
|
echo "Please install Node.js manually from https://nodejs.org/"
|
|
exit 1
|
|
;;
|
|
esac
|
|
echo -e "${GREEN}[OK]${NC} Node.js installed"
|
|
else
|
|
NODE_VER=$(node --version)
|
|
echo -e "${GREEN}[OK]${NC} Node.js $NODE_VER detected"
|
|
fi
|
|
|
|
# ========================================================
|
|
# NPM CHECK
|
|
# ========================================================
|
|
echo -e "${BOLD}[STEP 2/4]${NC} Checking npm..."
|
|
if ! command -v npm &> /dev/null; then
|
|
echo -e "${YELLOW}[INFO]${NC} npm not found. Installing..."
|
|
case $PKG_MANAGER in
|
|
apt)
|
|
$PKG_INSTALL npm
|
|
;;
|
|
pacman)
|
|
$PKG_INSTALL npm
|
|
;;
|
|
*)
|
|
echo -e "${RED}[ERROR]${NC} npm not found. Please install manually."
|
|
exit 1
|
|
;;
|
|
esac
|
|
fi
|
|
NPM_VER=$(npm --version)
|
|
echo -e "${GREEN}[OK]${NC} npm $NPM_VER detected"
|
|
|
|
# ========================================================
|
|
# ROOT DEPENDENCIES
|
|
# ========================================================
|
|
echo -e "${BOLD}[STEP 3/4]${NC} Installing root dependencies..."
|
|
if [ -d "node_modules" ]; then
|
|
echo -e "${GREEN}[OK]${NC} Root dependencies already installed"
|
|
else
|
|
echo -e "${YELLOW}[INFO]${NC} Running npm install..."
|
|
npm install --legacy-peer-deps 2>/dev/null || npm install
|
|
echo -e "${GREEN}[OK]${NC} Root dependencies installed"
|
|
fi
|
|
|
|
# ========================================================
|
|
# GOOSE ULTRA DEPENDENCIES
|
|
# ========================================================
|
|
echo -e "${BOLD}[STEP 4/4]${NC} Installing Goose Ultra IDE dependencies..."
|
|
if [ -d "bin/goose-ultra-final/node_modules" ]; then
|
|
echo -e "${GREEN}[OK]${NC} Goose Ultra dependencies already installed"
|
|
else
|
|
pushd bin/goose-ultra-final > /dev/null
|
|
echo -e "${YELLOW}[INFO]${NC} Running npm install in Goose Ultra..."
|
|
npm install --legacy-peer-deps 2>/dev/null || npm install
|
|
|
|
# Pre-build
|
|
echo -e "${YELLOW}[INFO]${NC} Pre-building Goose Ultra..."
|
|
npm run build 2>/dev/null || true
|
|
popd > /dev/null
|
|
echo -e "${GREEN}[OK]${NC} Goose Ultra dependencies installed"
|
|
fi
|
|
|
|
# ========================================================
|
|
# MAKE SCRIPTS EXECUTABLE
|
|
# ========================================================
|
|
chmod +x OpenQode.sh 2>/dev/null || true
|
|
chmod +x install-macos.sh 2>/dev/null || true
|
|
chmod +x install.sh 2>/dev/null || true
|
|
chmod +x start.sh 2>/dev/null || true
|
|
|
|
# ========================================================
|
|
# INSTALL ELECTRON DEPENDENCIES (for GUI)
|
|
# ========================================================
|
|
echo ""
|
|
echo -e "${BOLD}[OPTIONAL]${NC} Installing Electron dependencies for GUI support..."
|
|
case $PKG_MANAGER in
|
|
apt)
|
|
sudo apt-get install -y libgtk-3-0 libnotify4 libnss3 libxss1 libxtst6 xdg-utils libsecret-1-0 2>/dev/null || true
|
|
;;
|
|
dnf|yum)
|
|
sudo $PKG_MANAGER install -y gtk3 libXScrnSaver libnotify nss 2>/dev/null || true
|
|
;;
|
|
pacman)
|
|
sudo pacman -S --noconfirm gtk3 libnotify nss libxss 2>/dev/null || true
|
|
;;
|
|
esac
|
|
echo -e "${GREEN}[OK]${NC} Electron dependencies checked"
|
|
|
|
# ========================================================
|
|
# VERIFICATION
|
|
# ========================================================
|
|
echo ""
|
|
echo -e "${CYAN}========================================================"
|
|
echo " INSTALLATION COMPLETE"
|
|
echo -e "========================================================${NC}"
|
|
echo ""
|
|
echo " Checking installation..."
|
|
|
|
ERRORS=0
|
|
|
|
if command -v node &> /dev/null; then
|
|
echo -e " ${GREEN}[OK]${NC} Node.js"
|
|
else
|
|
echo -e " ${RED}[FAIL]${NC} Node.js"
|
|
((ERRORS++))
|
|
fi
|
|
|
|
if command -v npm &> /dev/null; then
|
|
echo -e " ${GREEN}[OK]${NC} npm"
|
|
else
|
|
echo -e " ${RED}[FAIL]${NC} npm"
|
|
((ERRORS++))
|
|
fi
|
|
|
|
if [ -d "node_modules" ]; then
|
|
echo -e " ${GREEN}[OK]${NC} Root dependencies"
|
|
else
|
|
echo -e " ${RED}[FAIL]${NC} Root dependencies"
|
|
((ERRORS++))
|
|
fi
|
|
|
|
if [ -d "bin/goose-ultra-final/node_modules" ]; then
|
|
echo -e " ${GREEN}[OK]${NC} Goose Ultra dependencies"
|
|
else
|
|
echo -e " ${RED}[FAIL]${NC} Goose Ultra dependencies"
|
|
((ERRORS++))
|
|
fi
|
|
|
|
echo ""
|
|
if [ $ERRORS -eq 0 ]; then
|
|
echo -e " ${GREEN}==========================================="
|
|
echo " ALL CHECKS PASSED! Ready to launch."
|
|
echo -e " ===========================================${NC}"
|
|
echo ""
|
|
echo " Run ./OpenQode.sh to start the application!"
|
|
echo ""
|
|
else
|
|
echo -e " ${RED}==========================================="
|
|
echo " SOME CHECKS FAILED ($ERRORS errors)"
|
|
echo -e " ===========================================${NC}"
|
|
echo ""
|
|
echo " Try running this installer again."
|
|
echo ""
|
|
fi
|
|
|
|
exit $ERRORS
|