Files
isocreator/install.sh

145 lines
3.6 KiB
Bash
Raw Permalink Normal View History

#!/usr/bin/env bash
set -e
# Colors
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
REPO_URL="https://code.foss.global/serve.zone/isocreator"
INSTALL_DIR="/opt/isocreator"
BIN_LINK="/usr/local/bin/isocreator"
VERSION="latest"
# Parse arguments
while [[ $# -gt 0 ]]; do
case $1 in
--version)
VERSION="$2"
shift 2
;;
--install-dir)
INSTALL_DIR="$2"
shift 2
;;
-h|--help)
echo "Usage: $0 [OPTIONS]"
echo ""
echo "Options:"
echo " --version VERSION Install specific version (default: latest)"
echo " --install-dir DIR Installation directory (default: /opt/isocreator)"
echo " -h, --help Show this help message"
exit 0
;;
*)
echo -e "${RED}Unknown option: $1${NC}"
exit 1
;;
esac
done
echo -e "${BLUE}🚀 isocreator installer${NC}"
echo ""
# Detect platform
OS=$(uname -s | tr '[:upper:]' '[:lower:]')
ARCH=$(uname -m)
case "$OS" in
linux)
PLATFORM="linux"
;;
darwin)
PLATFORM="macos"
;;
*)
echo -e "${RED}❌ Unsupported operating system: $OS${NC}"
exit 1
;;
esac
case "$ARCH" in
x86_64|amd64)
ARCH="x64"
;;
aarch64|arm64)
ARCH="arm64"
;;
*)
echo -e "${RED}❌ Unsupported architecture: $ARCH${NC}"
exit 1
;;
esac
BINARY_NAME="isocreator-${PLATFORM}-${ARCH}"
echo -e "${BLUE}📋 Detected platform: ${PLATFORM}-${ARCH}${NC}"
# Get version
if [ "$VERSION" == "latest" ]; then
echo -e "${BLUE}🔍 Fetching latest version...${NC}"
VERSION=$(curl -sSL "${REPO_URL}/raw/branch/main/deno.json" | grep -o '"version": "[^"]*' | cut -d'"' -f4)
if [ -z "$VERSION" ]; then
echo -e "${YELLOW}⚠️ Could not fetch latest version, using fallback${NC}"
VERSION="1.0.0"
fi
fi
echo -e "${GREEN}📦 Version: v${VERSION}${NC}"
# Download URL (try release first, fallback to raw branch)
RELEASE_URL="${REPO_URL}/releases/download/v${VERSION}/${BINARY_NAME}"
FALLBACK_URL="${REPO_URL}/raw/branch/main/dist/binaries/${BINARY_NAME}"
echo -e "${BLUE}⬇️ Downloading binary...${NC}"
# Try release URL first
if curl -fsSL -o "/tmp/${BINARY_NAME}" "$RELEASE_URL" 2>/dev/null; then
echo -e "${GREEN}✅ Downloaded from release${NC}"
else
echo -e "${YELLOW}⚠️ Release not found, trying fallback...${NC}"
if curl -fsSL -o "/tmp/${BINARY_NAME}" "$FALLBACK_URL"; then
echo -e "${GREEN}✅ Downloaded from fallback${NC}"
else
echo -e "${RED}❌ Failed to download binary${NC}"
exit 1
fi
fi
# Create installation directory
echo -e "${BLUE}📁 Creating installation directory...${NC}"
mkdir -p "$INSTALL_DIR"
# Move binary to installation directory
echo -e "${BLUE}📦 Installing binary...${NC}"
mv "/tmp/${BINARY_NAME}" "${INSTALL_DIR}/isocreator"
chmod +x "${INSTALL_DIR}/isocreator"
# Create symlink
echo -e "${BLUE}🔗 Creating symlink...${NC}"
if [ -L "$BIN_LINK" ]; then
rm "$BIN_LINK"
fi
ln -s "${INSTALL_DIR}/isocreator" "$BIN_LINK"
echo ""
echo -e "${GREEN}✅ isocreator installed successfully!${NC}"
echo ""
echo -e "${BLUE}📍 Installation location: ${INSTALL_DIR}/isocreator${NC}"
echo -e "${BLUE}🔗 Symlink created: ${BIN_LINK}${NC}"
echo ""
echo -e "${GREEN}💡 Try running: isocreator --help${NC}"
echo ""
echo -e "${YELLOW}⚠️ Note: isocreator requires the following system tools:${NC}"
echo -e " - xorriso (for ISO manipulation)"
echo -e " - isohybrid (for USB-bootable ISOs)"
echo -e ""
echo -e "${BLUE}Install on Ubuntu/Debian:${NC}"
echo -e " sudo apt install xorriso syslinux-utils"
echo -e ""
echo -e "${BLUE}Install on macOS:${NC}"
echo -e " brew install xorriso syslinux"