✨ (install.sh): refactor eza installation logic to streamline package manager checks and enhance fallback methods for various operating systems
This commit is contained in:
69
install.sh
69
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
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user