The dependency check was accepting any ISO tool (mkisofs, genisoimage, or xorriso), but the install commands now specifically install xorriso. Updated checks to require xorriso specifically since: - It handles both ISO9660 and UDF formats - Required for RIP module to extract UDF DVD ISOs - Now installed by all package managers in the script This ensures the install script will detect and install xorriso even if older tools like genisoimage are already present. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
260 lines
8.3 KiB
Bash
Executable File
260 lines
8.3 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=""
|
|
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
|
|
;;
|
|
*)
|
|
echo "Unknown option: $1"
|
|
echo "Usage: $0 [--dvdstyler-url URL] [--dvdstyler-zip PATH] [--skip-dvd]"
|
|
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: 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}✓${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}✗ 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}✓${NC} Windows dependency installer completed"
|
|
else
|
|
echo -e "${RED}✗ 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
|
|
|
|
install_deps=false
|
|
if [ ${#missing_deps[@]} -gt 0 ]; then
|
|
echo -e "${YELLOW}WARNING${NC} Missing dependencies: ${missing_deps[*]}"
|
|
read -p "Install missing dependencies now? [y/N]: " install_choice
|
|
if [[ "$install_choice" =~ ^[Yy]$ ]]; then
|
|
install_deps=true
|
|
fi
|
|
else
|
|
echo -e "${GREEN}✓${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}✗ No supported package manager found.${NC}"
|
|
echo "Please install: ffmpeg, dvdauthor, and mkisofs/genisoimage/xorriso"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
if ! command -v ffmpeg &> /dev/null; then
|
|
echo -e "${RED}✗ 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}✗ Missing required dependencies after install attempt.${NC}"
|
|
echo "Please install: dvdauthor"
|
|
exit 1
|
|
fi
|
|
if ! command -v xorriso &> /dev/null; then
|
|
echo -e "${RED}✗ 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 ""
|