forked from Leak_Technologies/VideoTools
Add comprehensive installation system with install.sh and INSTALLATION.md
The new installation system provides a painless, one-command setup for all users: install.sh Enhancements: - 5-step installation wizard with visual progress indicators - Auto-detects bash/zsh shell and updates rc files appropriately - Automatically adds PATH exports for system-wide or user-local installation - Automatically sources alias.sh for convenience commands - Clear instructions for next steps - Better error messages and validation - Supports both sudo and non-sudo installation paths - Default to user-local installation (no sudo required) INSTALLATION.md Documentation: - Comprehensive installation guide for all user types - Multiple installation options (system-wide vs user-local) - Detailed troubleshooting section - Manual installation instructions for advanced users - Platform-specific notes (Linux, macOS, Windows WSL) - Uninstallation instructions - Verification steps README.md Updates: - Updated Quick Start section to reference install.sh - Added INSTALLATION.md to documentation index - Clear distinction between user and developer setup This enables users to set up VideoTools with: bash install.sh source ~/.bashrc VideoTools No manual shell configuration needed!
This commit is contained in:
parent
d327d7f65e
commit
5d22bc306c
359
INSTALLATION.md
Normal file
359
INSTALLATION.md
Normal file
|
|
@ -0,0 +1,359 @@
|
|||
# VideoTools Installation Guide
|
||||
|
||||
This guide will help you install VideoTools with minimal setup.
|
||||
|
||||
## Quick Start (Recommended for Most Users)
|
||||
|
||||
### One-Command Installation
|
||||
|
||||
```bash
|
||||
bash install.sh
|
||||
```
|
||||
|
||||
That's it! The installer will:
|
||||
|
||||
1. ✅ Check your Go installation
|
||||
2. ✅ Build VideoTools from source
|
||||
3. ✅ Install the binary to your system
|
||||
4. ✅ Set up shell aliases automatically
|
||||
5. ✅ Configure your shell environment
|
||||
|
||||
### After Installation
|
||||
|
||||
Reload your shell:
|
||||
|
||||
```bash
|
||||
# For bash users:
|
||||
source ~/.bashrc
|
||||
|
||||
# For zsh users:
|
||||
source ~/.zshrc
|
||||
```
|
||||
|
||||
Then start using VideoTools:
|
||||
|
||||
```bash
|
||||
VideoTools
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Installation Options
|
||||
|
||||
### Option 1: System-Wide Installation (Recommended for Shared Computers)
|
||||
|
||||
```bash
|
||||
bash install.sh
|
||||
# Select option 1 when prompted
|
||||
# Enter your password if requested
|
||||
```
|
||||
|
||||
**Advantages:**
|
||||
- ✅ Available to all users on the system
|
||||
- ✅ Binary in standard system path
|
||||
- ✅ Professional setup
|
||||
|
||||
**Requirements:**
|
||||
- Sudo access (for system-wide installation)
|
||||
|
||||
---
|
||||
|
||||
### Option 2: User-Local Installation (Recommended for Personal Use)
|
||||
|
||||
```bash
|
||||
bash install.sh
|
||||
# Select option 2 when prompted (default)
|
||||
```
|
||||
|
||||
**Advantages:**
|
||||
- ✅ No sudo required
|
||||
- ✅ Works immediately
|
||||
- ✅ Private to your user account
|
||||
- ✅ No administrator needed
|
||||
|
||||
**Requirements:**
|
||||
- None - works on any system!
|
||||
|
||||
---
|
||||
|
||||
## What the Installer Does
|
||||
|
||||
The `install.sh` script performs these steps:
|
||||
|
||||
### Step 1: Go Verification
|
||||
- Checks if Go 1.21+ is installed
|
||||
- Displays Go version
|
||||
- Exits with helpful error message if not found
|
||||
|
||||
### Step 2: Build
|
||||
- Cleans previous builds
|
||||
- Downloads dependencies
|
||||
- Compiles VideoTools binary
|
||||
- Validates build success
|
||||
|
||||
### Step 3: Installation Path Selection
|
||||
- Presents two options:
|
||||
- System-wide (`/usr/local/bin`)
|
||||
- User-local (`~/.local/bin`)
|
||||
- Creates directories if needed
|
||||
|
||||
### Step 4: Binary Installation
|
||||
- Copies binary to selected location
|
||||
- Sets proper file permissions (755)
|
||||
- Validates installation
|
||||
|
||||
### Step 5: Shell Environment Setup
|
||||
- Detects your shell (bash/zsh)
|
||||
- Adds VideoTools installation path to PATH
|
||||
- Sources alias script for convenience commands
|
||||
- Adds to appropriate rc file (`.bashrc` or `.zshrc`)
|
||||
|
||||
---
|
||||
|
||||
## Convenience Commands
|
||||
|
||||
After installation, you'll have access to:
|
||||
|
||||
```bash
|
||||
VideoTools # Run VideoTools directly
|
||||
VideoToolsRebuild # Force rebuild from source
|
||||
VideoToolsClean # Clean build artifacts and cache
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Requirements
|
||||
|
||||
### Essential
|
||||
- **Go 1.21 or later** - https://go.dev/dl/
|
||||
- **Bash or Zsh** shell
|
||||
|
||||
### Optional
|
||||
- **FFmpeg** (for actual video encoding)
|
||||
```bash
|
||||
ffmpeg -version
|
||||
```
|
||||
|
||||
### System
|
||||
- Linux, macOS, or WSL (Windows Subsystem for Linux)
|
||||
- At least 2 GB free disk space
|
||||
- Stable internet connection (for dependencies)
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### "Go is not installed"
|
||||
|
||||
**Solution:** Install Go from https://go.dev/dl/
|
||||
|
||||
```bash
|
||||
# After installing Go, verify:
|
||||
go version
|
||||
```
|
||||
|
||||
### Build Failed
|
||||
|
||||
**Solution:** Check build log for specific errors:
|
||||
|
||||
```bash
|
||||
bash install.sh
|
||||
# Look for error messages in the build log output
|
||||
```
|
||||
|
||||
### Installation Path Not in PATH
|
||||
|
||||
If you see this warning:
|
||||
|
||||
```
|
||||
Warning: ~/.local/bin is not in your PATH
|
||||
```
|
||||
|
||||
**Solution:** Reload your shell:
|
||||
|
||||
```bash
|
||||
source ~/.bashrc # For bash
|
||||
source ~/.zshrc # For zsh
|
||||
```
|
||||
|
||||
Or manually add to your shell configuration:
|
||||
|
||||
```bash
|
||||
# Add this line to ~/.bashrc or ~/.zshrc:
|
||||
export PATH="$HOME/.local/bin:$PATH"
|
||||
```
|
||||
|
||||
### "Permission denied" on binary
|
||||
|
||||
**Solution:** Ensure file has correct permissions:
|
||||
|
||||
```bash
|
||||
chmod +x ~/.local/bin/VideoTools
|
||||
# or for system-wide:
|
||||
ls -l /usr/local/bin/VideoTools
|
||||
```
|
||||
|
||||
### Aliases Not Working
|
||||
|
||||
**Solution:** Ensure alias script is sourced:
|
||||
|
||||
```bash
|
||||
# Check if this line is in your ~/.bashrc or ~/.zshrc:
|
||||
source /path/to/VideoTools/scripts/alias.sh
|
||||
|
||||
# If not, add it manually:
|
||||
echo 'source /path/to/VideoTools/scripts/alias.sh' >> ~/.bashrc
|
||||
source ~/.bashrc
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Advanced: Manual Installation
|
||||
|
||||
If you prefer to install manually:
|
||||
|
||||
### Step 1: Build
|
||||
|
||||
```bash
|
||||
cd /path/to/VideoTools
|
||||
CGO_ENABLED=1 go build -o VideoTools .
|
||||
```
|
||||
|
||||
### Step 2: Install Binary
|
||||
|
||||
```bash
|
||||
# User-local installation:
|
||||
mkdir -p ~/.local/bin
|
||||
cp VideoTools ~/.local/bin/VideoTools
|
||||
chmod +x ~/.local/bin/VideoTools
|
||||
|
||||
# System-wide installation:
|
||||
sudo cp VideoTools /usr/local/bin/VideoTools
|
||||
sudo chmod +x /usr/local/bin/VideoTools
|
||||
```
|
||||
|
||||
### Step 3: Setup Aliases
|
||||
|
||||
```bash
|
||||
# Add to ~/.bashrc or ~/.zshrc:
|
||||
source /path/to/VideoTools/scripts/alias.sh
|
||||
|
||||
# Add to PATH if needed:
|
||||
export PATH="$HOME/.local/bin:$PATH"
|
||||
```
|
||||
|
||||
### Step 4: Reload Shell
|
||||
|
||||
```bash
|
||||
source ~/.bashrc # for bash
|
||||
source ~/.zshrc # for zsh
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Uninstallation
|
||||
|
||||
### If Installed System-Wide
|
||||
|
||||
```bash
|
||||
sudo rm /usr/local/bin/VideoTools
|
||||
```
|
||||
|
||||
### If Installed User-Local
|
||||
|
||||
```bash
|
||||
rm ~/.local/bin/VideoTools
|
||||
```
|
||||
|
||||
### Remove Shell Configuration
|
||||
|
||||
Remove these lines from `~/.bashrc` or `~/.zshrc`:
|
||||
|
||||
```bash
|
||||
# VideoTools installation path
|
||||
export PATH="$HOME/.local/bin:$PATH"
|
||||
|
||||
# VideoTools convenience aliases
|
||||
source "/path/to/VideoTools/scripts/alias.sh"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Verification
|
||||
|
||||
After installation, verify everything works:
|
||||
|
||||
```bash
|
||||
# Check binary is accessible:
|
||||
which VideoTools
|
||||
|
||||
# Check version/help:
|
||||
VideoTools --help
|
||||
|
||||
# Check aliases are available:
|
||||
type VideoToolsRebuild
|
||||
type VideoToolsClean
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Getting Help
|
||||
|
||||
For issues or questions:
|
||||
|
||||
1. Check **BUILD_AND_RUN.md** for build-specific help
|
||||
2. Check **DVD_USER_GUIDE.md** for usage help
|
||||
3. Review installation logs in `/tmp/videotools-build.log`
|
||||
4. Check shell configuration files for errors
|
||||
|
||||
---
|
||||
|
||||
## Next Steps
|
||||
|
||||
After successful installation:
|
||||
|
||||
1. **Read the Quick Start Guide:**
|
||||
```bash
|
||||
cat DVD_USER_GUIDE.md
|
||||
```
|
||||
|
||||
2. **Launch VideoTools:**
|
||||
```bash
|
||||
VideoTools
|
||||
```
|
||||
|
||||
3. **Convert your first video:**
|
||||
- Go to Convert module
|
||||
- Load a video
|
||||
- Select "DVD-NTSC (MPEG-2)" or "DVD-PAL (MPEG-2)"
|
||||
- Click "Add to Queue"
|
||||
- Click "View Queue" → "Start Queue"
|
||||
|
||||
---
|
||||
|
||||
## Platform-Specific Notes
|
||||
|
||||
### Linux (Ubuntu/Debian)
|
||||
|
||||
Installation is fully automatic. The script handles all steps.
|
||||
|
||||
### Linux (Arch/Manjaro)
|
||||
|
||||
Same as above. Installation works without modification.
|
||||
|
||||
### macOS
|
||||
|
||||
Installation works but requires Xcode Command Line Tools:
|
||||
|
||||
```bash
|
||||
xcode-select --install
|
||||
```
|
||||
|
||||
### Windows (WSL)
|
||||
|
||||
Installation works in WSL environment. Ensure you have WSL with Linux distro installed.
|
||||
|
||||
---
|
||||
|
||||
Enjoy using VideoTools! 🎬
|
||||
|
||||
26
README.md
26
README.md
|
|
@ -27,17 +27,32 @@ VideoTools is a professional-grade video processing application with a modern GU
|
|||
|
||||
## Quick Start
|
||||
|
||||
### One-Time Setup
|
||||
### Installation (One Command)
|
||||
|
||||
```bash
|
||||
cd /home/stu/Projects/VideoTools
|
||||
source scripts/alias.sh
|
||||
bash install.sh
|
||||
```
|
||||
|
||||
### Run VideoTools
|
||||
The installer will build, install, and set up everything automatically!
|
||||
|
||||
**After installation:**
|
||||
```bash
|
||||
source ~/.bashrc # (or ~/.zshrc for zsh)
|
||||
VideoTools
|
||||
```
|
||||
|
||||
### Alternative: Developer Setup
|
||||
|
||||
If you already have the repo cloned:
|
||||
|
||||
```bash
|
||||
cd /path/to/VideoTools
|
||||
source scripts/alias.sh
|
||||
VideoTools
|
||||
```
|
||||
|
||||
For detailed installation options, see **INSTALLATION.md**.
|
||||
|
||||
## How to Create a Professional DVD
|
||||
|
||||
1. **Start VideoTools** → `VideoTools`
|
||||
|
|
@ -57,6 +72,9 @@ Output is professional quality, ready for:
|
|||
|
||||
## Documentation
|
||||
|
||||
**Getting Started:**
|
||||
- **INSTALLATION.md** - Comprehensive installation guide (read this first!)
|
||||
|
||||
**For Users:**
|
||||
- **BUILD_AND_RUN.md** - How to build and run VideoTools
|
||||
- **DVD_USER_GUIDE.md** - Complete guide to DVD encoding
|
||||
|
|
|
|||
116
install.sh
116
install.sh
|
|
@ -7,6 +7,7 @@ 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
|
||||
|
|
@ -26,47 +27,56 @@ spinner() {
|
|||
|
||||
# Configuration
|
||||
BINARY_NAME="VideoTools"
|
||||
PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
DEFAULT_INSTALL_PATH="/usr/local/bin"
|
||||
USER_INSTALL_PATH="$HOME/.local/bin"
|
||||
|
||||
echo "========================================="
|
||||
echo " VideoTools Installation Script"
|
||||
echo "========================================="
|
||||
echo "════════════════════════════════════════════════════════════════"
|
||||
echo " VideoTools Professional Installation"
|
||||
echo "════════════════════════════════════════════════════════════════"
|
||||
echo ""
|
||||
|
||||
# Check if Go is installed
|
||||
# Step 1: Check if Go is installed
|
||||
echo -e "${CYAN}[1/5]${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 -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
|
||||
|
||||
# Check Go version
|
||||
GO_VERSION=$(go version | awk '{print $3}' | sed 's/go//')
|
||||
echo -e "${GREEN}✓${NC} Found Go version: $GO_VERSION"
|
||||
|
||||
# Build the binary
|
||||
# Step 2: Build the binary
|
||||
echo ""
|
||||
go build -o "$BINARY_NAME" . > /tmp/videotools-build.log 2>&1 &
|
||||
echo -e "${CYAN}[2/5]${NC} Building VideoTools..."
|
||||
cd "$PROJECT_ROOT"
|
||||
CGO_ENABLED=1 go build -o "$BINARY_NAME" . > /tmp/videotools-build.log 2>&1 &
|
||||
BUILD_PID=$!
|
||||
spinner $BUILD_PID "Building $BINARY_NAME"
|
||||
|
||||
if wait $BUILD_PID; then
|
||||
echo -e "${GREEN}✓${NC} Build successful"
|
||||
else
|
||||
echo -e "${RED}Error: Build failed${NC}"
|
||||
echo -e "${RED}✗ Build failed${NC}"
|
||||
echo ""
|
||||
echo "Build log:"
|
||||
cat /tmp/videotools-build.log
|
||||
rm -f /tmp/videotools-build.log
|
||||
exit 1
|
||||
fi
|
||||
rm -f /tmp/videotools-build.log
|
||||
|
||||
# Determine installation path
|
||||
# Step 3: Determine installation path
|
||||
echo ""
|
||||
echo -e "${CYAN}[3/5]${NC} Installation path selection"
|
||||
echo ""
|
||||
echo "Where would you like to install $BINARY_NAME?"
|
||||
echo "1) System-wide (/usr/local/bin) - requires sudo"
|
||||
echo "2) User-local (~/.local/bin) - no sudo needed"
|
||||
read -p "Enter choice [1 or 2]: " choice
|
||||
echo " 1) System-wide (/usr/local/bin) - requires sudo, available to all users"
|
||||
echo " 2) User-local (~/.local/bin) - no sudo needed, available only to you"
|
||||
echo ""
|
||||
read -p "Enter choice [1 or 2, default 2]: " choice
|
||||
choice=${choice:-2}
|
||||
|
||||
case $choice in
|
||||
1)
|
||||
|
|
@ -76,60 +86,102 @@ case $choice in
|
|||
2)
|
||||
INSTALL_PATH="$USER_INSTALL_PATH"
|
||||
NEEDS_SUDO=false
|
||||
# Create ~/.local/bin if it doesn't exist
|
||||
mkdir -p "$INSTALL_PATH"
|
||||
;;
|
||||
*)
|
||||
echo -e "${RED}Invalid choice. Exiting.${NC}"
|
||||
echo -e "${RED}✗ Invalid choice. Exiting.${NC}"
|
||||
rm -f "$BINARY_NAME"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# Install the binary
|
||||
# Step 4: Install the binary
|
||||
echo ""
|
||||
echo -e "${CYAN}[4/5]${NC} Installing binary to $INSTALL_PATH..."
|
||||
if [ "$NEEDS_SUDO" = true ]; then
|
||||
sudo install -m 755 "$BINARY_NAME" "$INSTALL_PATH/$BINARY_NAME" > /dev/null 2>&1 &
|
||||
INSTALL_PID=$!
|
||||
spinner $INSTALL_PID "Installing $BINARY_NAME to $INSTALL_PATH"
|
||||
spinner $INSTALL_PID "Installing $BINARY_NAME"
|
||||
|
||||
if wait $INSTALL_PID; then
|
||||
echo -e "${GREEN}✓${NC} Installation successful"
|
||||
else
|
||||
echo -e "${RED}Error: Installation failed${NC}"
|
||||
echo -e "${RED}✗ Installation failed${NC}"
|
||||
rm -f "$BINARY_NAME"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
install -m 755 "$BINARY_NAME" "$INSTALL_PATH/$BINARY_NAME" > /dev/null 2>&1 &
|
||||
INSTALL_PID=$!
|
||||
spinner $INSTALL_PID "Installing $BINARY_NAME to $INSTALL_PATH"
|
||||
spinner $INSTALL_PID "Installing $BINARY_NAME"
|
||||
|
||||
if wait $INSTALL_PID; then
|
||||
echo -e "${GREEN}✓${NC} Installation successful"
|
||||
else
|
||||
echo -e "${RED}Error: Installation failed${NC}"
|
||||
echo -e "${RED}✗ Installation failed${NC}"
|
||||
rm -f "$BINARY_NAME"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# Clean up the local binary
|
||||
rm -f "$BINARY_NAME"
|
||||
|
||||
# Check if install path is in PATH
|
||||
# Step 5: Setup shell aliases and environment
|
||||
echo ""
|
||||
if [[ ":$PATH:" != *":$INSTALL_PATH:"* ]]; then
|
||||
echo -e "${YELLOW}Warning: $INSTALL_PATH is not in your PATH${NC}"
|
||||
echo "Add the following line to your ~/.bashrc or ~/.zshrc:"
|
||||
echo ""
|
||||
echo " export PATH=\"$INSTALL_PATH:\$PATH\""
|
||||
echo ""
|
||||
echo -e "${CYAN}[5/5]${NC} Setting up shell environment..."
|
||||
|
||||
# Detect shell
|
||||
if [ -n "$ZSH_VERSION" ]; then
|
||||
SHELL_RC="$HOME/.zshrc"
|
||||
SHELL_NAME="zsh"
|
||||
elif [ -n "$BASH_VERSION" ]; then
|
||||
SHELL_RC="$HOME/.bashrc"
|
||||
SHELL_NAME="bash"
|
||||
else
|
||||
# Default to bash
|
||||
SHELL_RC="$HOME/.bashrc"
|
||||
SHELL_NAME="bash"
|
||||
fi
|
||||
|
||||
# Create alias setup script
|
||||
ALIAS_SCRIPT="$PROJECT_ROOT/scripts/alias.sh"
|
||||
|
||||
# Add installation path to PATH if needed
|
||||
if [[ ":$PATH:" != *":$INSTALL_PATH:"* ]]; then
|
||||
# Check if PATH export already exists
|
||||
if ! grep -q "export PATH.*$INSTALL_PATH" "$SHELL_RC" 2>/dev/null; then
|
||||
echo "" >> "$SHELL_RC"
|
||||
echo "# VideoTools installation path" >> "$SHELL_RC"
|
||||
echo "export PATH=\"$INSTALL_PATH:\$PATH\"" >> "$SHELL_RC"
|
||||
echo -e "${GREEN}✓${NC} Added $INSTALL_PATH to PATH in $SHELL_RC"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Add alias sourcing if not already present
|
||||
if ! grep -q "source.*alias.sh" "$SHELL_RC" 2>/dev/null; then
|
||||
echo "" >> "$SHELL_RC"
|
||||
echo "# VideoTools convenience aliases" >> "$SHELL_RC"
|
||||
echo "source \"$ALIAS_SCRIPT\"" >> "$SHELL_RC"
|
||||
echo -e "${GREEN}✓${NC} Added VideoTools aliases to $SHELL_RC"
|
||||
fi
|
||||
|
||||
echo "========================================="
|
||||
echo -e "${GREEN}Installation complete!${NC}"
|
||||
echo "========================================="
|
||||
echo ""
|
||||
echo "You can now run: $BINARY_NAME"
|
||||
echo "════════════════════════════════════════════════════════════════"
|
||||
echo -e "${GREEN}Installation Complete!${NC}"
|
||||
echo "════════════════════════════════════════════════════════════════"
|
||||
echo ""
|
||||
echo "Next steps:"
|
||||
echo ""
|
||||
echo "1. ${CYAN}Reload your shell configuration:${NC}"
|
||||
echo " source $SHELL_RC"
|
||||
echo ""
|
||||
echo "2. ${CYAN}Run VideoTools:${NC}"
|
||||
echo " VideoTools"
|
||||
echo ""
|
||||
echo "3. ${CYAN}Available commands:${NC}"
|
||||
echo " • VideoTools - Run the application"
|
||||
echo " • VideoToolsRebuild - Force rebuild from source"
|
||||
echo " • VideoToolsClean - Clean build artifacts and cache"
|
||||
echo ""
|
||||
echo "For more information, see BUILD_AND_RUN.md and DVD_USER_GUIDE.md"
|
||||
echo ""
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user