diff --git a/install.sh b/install.sh index e188b07..db86eb6 100755 --- a/install.sh +++ b/install.sh @@ -42,36 +42,65 @@ detect_os() { fi } -# Helper: install eza if the package manager couldn't provide it -install_eza_fallback() { +# Install eza using package manager or fallback methods +install_eza() { local os=$(detect_os) - echo "Attempting fallback installation of eza..." + echo "Installing eza..." + case $os in - ubuntu|debian) - # Install cargo if it doesn't exist - if ! command -v cargo &> /dev/null; then - echo "Installing Rust and cargo..." - sudo apt-get update - sudo apt-get install -y curl build-essential - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y - source ~/.cargo/env + macos) + if ! command -v brew &> /dev/null; then + echo "Homebrew is not installed. Installing Homebrew..." + /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" + fi + brew install eza + ;; + ubuntu|debian) + sudo apt-get update + if ! sudo apt-get install -y eza; then + echo "Package manager installation failed, attempting fallback..." + # Install cargo if it doesn't exist + if ! command -v cargo &> /dev/null; then + echo "Installing Rust and cargo..." + sudo apt-get update + sudo apt-get install -y curl build-essential + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y + source ~/.cargo/env + fi + cargo install eza fi - cargo install eza ;; fedora) - sudo dnf install -y eza || { - command -v cargo &> /dev/null && cargo install eza - } + if ! sudo dnf install -y eza; then + echo "Package manager installation failed, attempting fallback..." + if command -v cargo &> /dev/null; then + cargo install eza + else + wget -qO- https://github.com/eza-community/eza/releases/latest/download/eza_x86_64-unknown-linux-gnu.tar.gz | tar xz + sudo install -m 755 eza /usr/local/bin/eza + fi + fi ;; centos|rhel) - if command -v cargo &> /dev/null; then - cargo install eza - else + if ! sudo yum install -y eza; then + echo "Package manager installation failed, attempting fallback..." + if command -v cargo &> /dev/null; then + cargo install eza + else + wget -qO- https://github.com/eza-community/eza/releases/latest/download/eza_x86_64-unknown-linux-gnu.tar.gz | tar xz + sudo install -m 755 eza /usr/local/bin/eza + fi + fi + ;; + arch|manjaro) + if ! sudo pacman -Syu --noconfirm eza; then + echo "Package manager installation failed, attempting fallback..." wget -qO- https://github.com/eza-community/eza/releases/latest/download/eza_x86_64-unknown-linux-gnu.tar.gz | tar xz sudo install -m 755 eza /usr/local/bin/eza fi ;; *) + echo "Unsupported operating system for package manager installation, using fallback..." wget -qO- https://github.com/eza-community/eza/releases/latest/download/eza_x86_64-unknown-linux-gnu.tar.gz | tar xz sudo install -m 755 eza /usr/local/bin/eza ;; @@ -100,7 +129,7 @@ install_zoxide_fallback() { # Core: install required packages via the preferred package manager, then fall back where needed install_packages() { local os=$(detect_os) - local base_packages="zsh git wget fontconfig eza zoxide" + local base_packages="zsh git wget fontconfig zoxide" case $os in macos) @@ -129,7 +158,7 @@ install_packages() { esac # Fallbacks for any tools that are still missing after the package-manager step - command -v eza &> /dev/null || install_eza_fallback + command -v eza &> /dev/null || install_eza command -v zoxide &> /dev/null || install_zoxide_fallback }