VideoTools/scripts/install.sh
Stu Leak 7cecf2bdd7 Remove emojis from install script, use text indicators
Replaced all emojis with text-based indicators:
- ✓ → [OK] (with GREEN color)
- ✗ → [ERROR] (with RED color)
- ⚠ → WARNING: (with YELLOW color)

Color coding is preserved for visual distinction while remaining
accessible in all terminals and avoiding encoding issues.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-30 21:20:24 -05:00

324 lines
11 KiB
Bash
Executable File

#!/bin/bash
set -e
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
CYAN='\033[0;36m'
NC='\033[0m' # No Color
# Spinner function
spinner() {
local pid=$1
local task=$2
local spin='⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏'
local i=0
while kill -0 $pid 2>/dev/null; do
i=$(( (i+1) %10 ))
printf "\r${BLUE}${spin:$i:1}${NC} %s..." "$task"
sleep 0.1
done
printf "\r"
}
# Configuration
PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
# Args
DVDSTYLER_URL=""
DVDSTYLER_ZIP=""
SKIP_DVD_TOOLS=""
SKIP_AI_TOOLS=""
while [ $# -gt 0 ]; do
case "$1" in
--dvdstyler-url=*)
DVDSTYLER_URL="${1#*=}"
shift
;;
--dvdstyler-url)
DVDSTYLER_URL="$2"
shift 2
;;
--dvdstyler-zip=*)
DVDSTYLER_ZIP="${1#*=}"
shift
;;
--dvdstyler-zip)
DVDSTYLER_ZIP="$2"
shift 2
;;
--skip-dvd)
SKIP_DVD_TOOLS=true
shift
;;
--skip-ai)
SKIP_AI_TOOLS=true
shift
;;
*)
echo "Unknown option: $1"
echo "Usage: $0 [--dvdstyler-url URL] [--dvdstyler-zip PATH] [--skip-dvd] [--skip-ai]"
exit 1
;;
esac
done
# Platform detection
UNAME_S="$(uname -s)"
IS_WINDOWS=false
IS_DARWIN=false
IS_LINUX=false
case "$UNAME_S" in
MINGW*|MSYS*|CYGWIN*)
IS_WINDOWS=true
;;
Darwin*)
IS_DARWIN=true
;;
Linux*)
IS_LINUX=true
;;
esac
INSTALL_TITLE="VideoTools Installation"
if [ "$IS_WINDOWS" = true ]; then
INSTALL_TITLE="VideoTools Windows Installation"
elif [ "$IS_DARWIN" = true ]; then
INSTALL_TITLE="VideoTools macOS Installation"
elif [ "$IS_LINUX" = true ]; then
INSTALL_TITLE="VideoTools Linux Installation"
fi
echo "════════════════════════════════════════════════════════════════"
echo " $INSTALL_TITLE"
echo "════════════════════════════════════════════════════════════════"
echo ""
# Step 1: Check if Go is installed
echo -e "${CYAN}[1/2]${NC} Checking Go installation..."
if ! command -v go &> /dev/null; then
echo -e "${RED}[ERROR] Error: Go is not installed or not in PATH${NC}"
echo "Please install Go 1.21+ from https://go.dev/dl/"
exit 1
fi
GO_VERSION=$(go version | awk '{print $3}' | sed 's/go//')
echo -e "${GREEN}[OK]${NC} Found Go version: $GO_VERSION"
# Step 2: Check authoring dependencies
echo ""
echo -e "${CYAN}[2/2]${NC} Checking authoring dependencies..."
if [ "$IS_WINDOWS" = true ]; then
echo "Detected Windows environment."
if [ -z "$SKIP_DVD_TOOLS" ]; then
echo ""
read -p "Install DVD authoring tools (DVDStyler)? [y/N]: " dvd_choice
if [[ "$dvd_choice" =~ ^[Yy]$ ]]; then
SKIP_DVD_TOOLS=false
else
SKIP_DVD_TOOLS=true
fi
fi
if command -v powershell.exe &> /dev/null; then
PS_ARGS=()
if [ "$SKIP_DVD_TOOLS" = true ]; then
PS_ARGS+=("-SkipDvdStyler")
fi
if [ -n "$DVDSTYLER_ZIP" ]; then
powershell.exe -NoProfile -ExecutionPolicy Bypass -File "$PROJECT_ROOT/scripts/install-deps-windows.ps1" -DvdStylerZip "$DVDSTYLER_ZIP" "${PS_ARGS[@]}"
elif [ -n "$DVDSTYLER_URL" ]; then
powershell.exe -NoProfile -ExecutionPolicy Bypass -File "$PROJECT_ROOT/scripts/install-deps-windows.ps1" -DvdStylerUrl "$DVDSTYLER_URL" "${PS_ARGS[@]}"
else
powershell.exe -NoProfile -ExecutionPolicy Bypass -File "$PROJECT_ROOT/scripts/install-deps-windows.ps1" "${PS_ARGS[@]}"
fi
if [ $? -ne 0 ]; then
echo -e "${RED}[ERROR] Windows dependency installer failed.${NC}"
echo "If DVDStyler download failed, retry with a direct mirror:"
echo ""
echo "Git Bash:"
echo " export VT_DVDSTYLER_URL=\"https://netcologne.dl.sourceforge.net/project/dvdstyler/DVDStyler/3.2.1/DVDStyler-3.2.1-win64.zip\""
echo " ./scripts/install.sh"
echo ""
echo "PowerShell:"
echo " \$env:VT_DVDSTYLER_URL=\"https://netcologne.dl.sourceforge.net/project/dvdstyler/DVDStyler/3.2.1/DVDStyler-3.2.1-win64.zip\""
echo " .\\scripts\\install-deps-windows.ps1"
exit 1
fi
echo -e "${GREEN}[OK]${NC} Windows dependency installer completed"
else
echo -e "${RED}[ERROR] powershell.exe not found.${NC}"
echo "Please run: $PROJECT_ROOT\\scripts\\install-deps-windows.ps1"
exit 1
fi
else
missing_deps=()
if ! command -v ffmpeg &> /dev/null; then
missing_deps+=("ffmpeg")
fi
if [ -z "$SKIP_DVD_TOOLS" ]; then
echo ""
read -p "Install DVD authoring tools (dvdauthor + ISO tools)? [y/N]: " dvd_choice
if [[ "$dvd_choice" =~ ^[Yy]$ ]]; then
SKIP_DVD_TOOLS=false
else
SKIP_DVD_TOOLS=true
fi
fi
if [ "$SKIP_DVD_TOOLS" = false ]; then
if ! command -v dvdauthor &> /dev/null; then
missing_deps+=("dvdauthor")
fi
if ! command -v xorriso &> /dev/null; then
missing_deps+=("xorriso")
fi
fi
# Ask about AI upscaling tools
if [ -z "$SKIP_AI_TOOLS" ]; then
echo ""
read -p "Install AI upscaling tools (Real-ESRGAN NCNN)? [y/N]: " ai_choice
if [[ "$ai_choice" =~ ^[Yy]$ ]]; then
SKIP_AI_TOOLS=false
else
SKIP_AI_TOOLS=true
fi
fi
if [ "$SKIP_AI_TOOLS" = false ]; then
if ! command -v realesrgan-ncnn-vulkan &> /dev/null; then
missing_deps+=("realesrgan-ncnn-vulkan")
fi
fi
install_deps=false
if [ ${#missing_deps[@]} -gt 0 ]; then
echo -e "${YELLOW}WARNING:${NC} Missing dependencies: ${missing_deps[*]}"
echo "Installing missing dependencies..."
install_deps=true
else
echo -e "${GREEN}[OK]${NC} All authoring dependencies found"
fi
if [ "$install_deps" = true ]; then
if command -v apt-get &> /dev/null; then
sudo apt-get update
if [ "$SKIP_DVD_TOOLS" = true ]; then
sudo apt-get install -y ffmpeg
else
sudo apt-get install -y ffmpeg dvdauthor xorriso
fi
elif command -v dnf &> /dev/null; then
if [ "$SKIP_DVD_TOOLS" = true ]; then
sudo dnf install -y ffmpeg
else
sudo dnf install -y ffmpeg dvdauthor xorriso
fi
elif command -v pacman &> /dev/null; then
if [ "$SKIP_DVD_TOOLS" = true ]; then
sudo pacman -Sy --noconfirm ffmpeg
else
sudo pacman -Sy --noconfirm ffmpeg dvdauthor cdrtools
fi
elif command -v zypper &> /dev/null; then
if [ "$SKIP_DVD_TOOLS" = true ]; then
sudo zypper install -y ffmpeg
else
sudo zypper install -y ffmpeg dvdauthor xorriso
fi
elif command -v brew &> /dev/null; then
if [ "$SKIP_DVD_TOOLS" = true ]; then
brew install ffmpeg
else
brew install ffmpeg dvdauthor xorriso
fi
else
echo -e "${RED}[ERROR] No supported package manager found.${NC}"
echo "Please install: ffmpeg, dvdauthor, and mkisofs/genisoimage/xorriso"
exit 1
fi
# Install Real-ESRGAN NCNN if requested and not available
if [ "$SKIP_AI_TOOLS" = false ] && ! command -v realesrgan-ncnn-vulkan &> /dev/null; then
echo ""
echo "Installing Real-ESRGAN NCNN..."
# Detect architecture
ARCH=$(uname -m)
if [ "$ARCH" = "x86_64" ]; then
ESRGAN_ARCH="ubuntu"
elif [ "$ARCH" = "aarch64" ] || [ "$ARCH" = "arm64" ]; then
echo -e "${YELLOW}WARNING:${NC} ARM architecture detected. You may need to build realesrgan-ncnn-vulkan from source."
echo "See: https://github.com/xinntao/Real-ESRGAN-ncnn-vulkan"
ESRGAN_ARCH=""
else
echo -e "${YELLOW}WARNING:${NC} Unsupported architecture: $ARCH"
ESRGAN_ARCH=""
fi
if [ -n "$ESRGAN_ARCH" ]; then
ESRGAN_URL="https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.5.0/realesrgan-ncnn-vulkan-20220424-ubuntu.zip"
TEMP_DIR=$(mktemp -d)
if command -v wget &> /dev/null; then
wget -q "$ESRGAN_URL" -O "$TEMP_DIR/realesrgan.zip"
elif command -v curl &> /dev/null; then
curl -sL "$ESRGAN_URL" -o "$TEMP_DIR/realesrgan.zip"
else
echo -e "${YELLOW}WARNING:${NC} Neither wget nor curl found. Cannot download Real-ESRGAN."
echo "Please install manually from: https://github.com/xinntao/Real-ESRGAN/releases"
fi
if [ -f "$TEMP_DIR/realesrgan.zip" ]; then
unzip -q "$TEMP_DIR/realesrgan.zip" -d "$TEMP_DIR"
sudo install -m 755 "$TEMP_DIR/realesrgan-ncnn-vulkan" /usr/local/bin/ 2>/dev/null || \
install -m 755 "$TEMP_DIR/realesrgan-ncnn-vulkan" "$HOME/.local/bin/" 2>/dev/null || \
echo -e "${YELLOW}WARNING:${NC} Could not install to /usr/local/bin or ~/.local/bin"
rm -rf "$TEMP_DIR"
if command -v realesrgan-ncnn-vulkan &> /dev/null; then
echo -e "${GREEN}[OK]${NC} Real-ESRGAN NCNN installed successfully"
fi
fi
fi
fi
fi
if ! command -v ffmpeg &> /dev/null; then
echo -e "${RED}[ERROR] Missing required dependencies after install attempt.${NC}"
echo "Please install: ffmpeg"
exit 1
fi
if [ "$SKIP_DVD_TOOLS" = false ]; then
if ! command -v dvdauthor &> /dev/null; then
echo -e "${RED}[ERROR] Missing required dependencies after install attempt.${NC}"
echo "Please install: dvdauthor"
exit 1
fi
if ! command -v xorriso &> /dev/null; then
echo -e "${RED}[ERROR] Missing xorriso after install attempt.${NC}"
echo "Please install: xorriso (required for DVD ISO extraction)"
exit 1
fi
fi
fi
echo ""
echo "════════════════════════════════════════════════════════════════"
echo "Dependency Installation Complete!"
echo "════════════════════════════════════════════════════════════════"
echo ""
echo "Next steps:"
echo ""
echo "1. Build VideoTools:"
echo " ./scripts/build.sh"
echo ""
echo "2. Run VideoTools:"
echo " ./scripts/run.sh"
echo ""
echo "For more information, see BUILD_AND_RUN.md and DVD_USER_GUIDE.md"
echo ""