# Tea CLI Installer A comprehensive installer script for Gitea Tea CLI that supports multiple Linux distributions and installation methods. ## Features - **Version Checking**: Only downloads and installs if newer version is available - **Multiple Installation Methods**: - Package manager (apt, yum, dnf, zypper) - Binary download from Gitea releases - **Cross-Platform Support**: Debian, Ubuntu, RHEL, CentOS, Fedora, Arch, openSUSE - **Architecture Support**: x86_64 (amd64), ARM64, ARM - **Automatic Updates**: Fetches latest version from Gitea API - **Force Reinstall**: Option to force reinstall even if up-to-date ## Usage ### Basic Usage ```bash # Install latest version (only if newer than current) ./install-tea-cli.sh # Install specific version ./install-tea-cli.sh -v v0.11.0 # Force reinstall even if up-to-date ./install-tea-cli.sh --force ``` ### Installation Methods ```bash # Force installation from package manager ./install-tea-cli.sh --package # Force installation from binary ./install-tea-cli.sh --binary ``` ### Help ```bash ./install-tea-cli.sh --help ``` ## Installation Logic ### Version Checking 1. **Check Current Version**: Detects installed Tea CLI version 2. **Fetch Latest**: Gets latest version from Gitea API 3. **Compare Versions**: Only proceeds if newer version available 4. **Force Override**: `--force` flag bypasses version check ### Installation Priority 1. **Package Manager** (preferred): - Debian/Ubuntu: Checks for official Tea CLI package - RHEL/CentOS/Fedora: Checks for available Tea CLI package - Arch Linux: Available in AUR (pacman) - openSUSE: Checks for available Tea CLI package 2. **Binary Download** (fallback): - Downloads platform-specific binary from Gitea releases - Supports x86_64, ARM64, ARM architectures - Installs to `/usr/local/bin/tea` ## File Locations ### Installation Directory - Binary: `/usr/local/bin/tea` - Symlink: `/usr/local/bin/tea-` ## Version Comparison The installer uses semantic version comparison: - **Format**: `vX.Y.Z` (e.g., `v0.11.1`) - **Logic**: Compares major, minor, patch versions - **Build Info**: Ignores build hashes/identifiers ### Examples ```bash # Current: 0.11.0, Latest: v0.11.1 → Update needed # Current: 0.11.1, Latest: v0.11.1 → No update needed # Current: 0.11.2, Latest: v0.11.1 → No update needed (newer installed) ``` ## System Requirements ### Required - `curl` or `wget` (for downloading) - `sudo` access (for system-wide installation) ### Optional - Package manager access (for package installations) - Internet connection (for downloading releases) ## Supported Distributions ### Package Manager Support - **Debian/Ubuntu**: Checks for official Tea CLI package - **RHEL/CentOS/Fedora**: Checks for available Tea CLI package - **Arch Linux**: Available in AUR (pacman) - **openSUSE**: Checks for available Tea CLI package ### Binary Support - **Linux x86_64**: `tea-0.11.1-linux-amd64` - **Linux ARM64**: `tea-0.11.1-linux-arm64` - **Linux ARM**: `tea-0.11.1-linux-arm-5`, `tea-0.11.1-linux-arm-6`, `tea-0.11.1-linux-arm-7` ## Troubleshooting ### Version Detection Issues ```bash # Check current version manually tea --version # Force reinstall if version detection fails ./install-tea-cli.sh --force ``` ### Permission Issues ```bash # Ensure proper permissions sudo chown root:root /usr/local/bin/tea sudo chmod 755 /usr/local/bin/tea ``` ### PATH Issues ```bash # Check which tea is being used which tea # Check all tea installations find /usr -name tea 2>/dev/null find /home -name tea 2>/dev/null # Update PATH if needed export PATH="/usr/local/bin:$PATH" ``` ## Examples ### Typical Workflow ```bash # Check if update needed ./install-tea-cli.sh # Output if up-to-date: # [SUCCESS] You already have the latest version (0.11.1) # [SUCCESS] No installation needed. Exiting. # Output if update available: # [INFO] Current version: 0.11.0 # [INFO] Latest version: v0.11.1 # [INFO] Newer version available: v0.11.1 > 0.11.0 # [SUCCESS] Installation completed successfully! ``` ### Force Binary Installation ```bash # Force binary installation ./install-tea-cli.sh --force --binary # Output: # [SUCCESS] Tea CLI binary installed successfully # Next steps: # 1. Test installation: tea --version # 2. Configure login: tea login add # 3. Use Tea CLI: tea --help ``` ## Integration with Setup Script The Tea CLI installer is automatically integrated with the main Git repository setup script: 1. **Detection**: Checks for existing Tea CLI installations 2. **Offer Installation**: Prompts to install Tea CLI if none found 3. **Configuration**: Guides through login setup 4. **Repository Management**: Enables Gitea repository operations ## Security Features - **Official Releases**: Downloads from official Gitea releases - **Package Verification**: Uses official package repositories - **Proper Permissions**: Sets appropriate file ownership and permissions ## Contributing To add support for new distributions or architectures: 1. Update `detect_os()` function for new package managers 2. Add architecture detection in `get_arch()` function 3. Update installation methods in `install_tea_from_*()` functions 4. Test with target distribution 5. Update documentation ## License This installer script follows the same license as Gitea Tea CLI (MIT).