Improve distro determine

This commit is contained in:
clsty
2025-11-11 09:16:47 +08:00
parent 6fedb70f69
commit e00e703af2
2 changed files with 61 additions and 42 deletions
+43 -32
View File
@@ -9,38 +9,49 @@ function vianix-warning(){
pause pause
} }
function install_cmds(){ function install_cmds(){
if [[ "$OS_DISTRO_ID" == "arch" || "$OS_DISTRO_ID_LIKE" == "arch" || "$OS_DISTRO_ID" == "cachyos" ]]; then case $OS_GROUP_ID in
local pkgs=() "arch")
for cmd in "$@";do local pkgs=()
# For package name which is not cmd name, use "case" syntax to replace for cmd in "$@";do
pkgs+=($cmd) # For package name which is not cmd name, use "case" syntax to replace
done pkgs+=($cmd)
x sudo pacman -Syu done
x sudo pacman -S --noconfirm --needed "${pkgs[@]}" x sudo pacman -Syu
elif [[ "$OS_DISTRO_ID" == "debian" || "$OS_DISTRO_ID_LIKE" == "debian" ]]; then x sudo pacman -S --noconfirm --needed "${pkgs[@]}"
local pkgs=() ;;
for cmd in "$@";do "debian")
# For package name which is not cmd name, use "case" syntax to replace local pkgs=()
pkgs+=($cmd) for cmd in "$@";do
done # For package name which is not cmd name, use "case" syntax to replace
x sudo apt update -y pkgs+=($cmd)
x sudo apt install -y "${pkgs[@]}" done
elif [[ "$OS_DISTRO_ID" == "fedora" || "$OS_DISTRO_ID_LIKE" == "fedora" ]]; then x sudo apt update -y
local pkgs=() x sudo apt install -y "${pkgs[@]}"
for cmd in "$@";do ;;
# For package name which is not cmd name, use "case" syntax to replace "fedora")
pkgs+=($cmd) local pkgs=()
done for cmd in "$@";do
x sudo dnf install -y "${pkgs[@]}" # For package name which is not cmd name, use "case" syntax to replace
elif [[ "$OS_DISTRO_ID" =~ ^(opensuse-leap|opensuse-tumbleweed)$ ]] || [[ "$OS_DISTRO_ID_LIKE" =~ ^(opensuse|suse)(\ (opensuse|suse))?$ ]]; then pkgs+=($cmd)
local pkgs=() done
for cmd in "$@";do x sudo dnf install -y "${pkgs[@]}"
# For package name which is not cmd name, use "case" syntax to replace ;;
pkgs+=($cmd) "suse")
done local pkgs=()
x sudo zypper refresh for cmd in "$@";do
x sudo zypper -n install "${pkgs[@]}" # For package name which is not cmd name, use "case" syntax to replace
fi pkgs+=($cmd)
done
x sudo zypper refresh
x sudo zypper -n install "${pkgs[@]}"
;;
*)
printf "WARNING\n"
printf "No method found to install package providing the commands:\n"
printf " $@\n"
printf "Please install by yourself.\n"
;;
esac
} }
function install_nix(){ function install_nix(){
# https://github.com/NixOS/experimental-nix-installer # https://github.com/NixOS/experimental-nix-installer
+18 -10
View File
@@ -31,15 +31,7 @@ function print_os_group_id_unofficial(){
printf "============\n\n" printf "============\n\n"
printf "${STY_RST}" printf "${STY_RST}"
} }
function print_os_group_id_fallback(){ function print_os_group_id_unsupported(){
printf "${STY_RED}"
printf "===CAUTION===\n"
printf "No support provided for your distro, using fallback method.\n"
printf "Proceed only at your own risk.\n"
printf "=============\n\n"
printf "${STY_RST}"
}
function print_os_group_id_force_vianix(){
printf "${STY_RED}" printf "${STY_RED}"
printf "===CAUTION===\n" printf "===CAUTION===\n"
printf "\"--via-nix\" is forcely specified as the only method to support your distro.\n" printf "\"--via-nix\" is forcely specified as the only method to support your distro.\n"
@@ -48,6 +40,14 @@ function print_os_group_id_force_vianix(){
printf "Proceed only at your own risk.\n" printf "Proceed only at your own risk.\n"
printf "=============\n\n" printf "=============\n\n"
printf "${STY_RST}" printf "${STY_RST}"
sleep 3
}
function print_os_group_id_fallback(){
printf "${STY_RED}"
printf "===CAUTION===\n"
printf "Distro not recognized, determined as fallback.\n"
printf "=============\n\n"
printf "${STY_RST}"
} }
function print_os_group_id_architecture(){ function print_os_group_id_architecture(){
printf "${STY_RED}" printf "${STY_RED}"
@@ -99,10 +99,18 @@ elif [[ "$OS_DISTRO_ID" == "fedora" ]]; then
elif [[ "$OS_DISTRO_ID_LIKE" == "fedora" ]]; then elif [[ "$OS_DISTRO_ID_LIKE" == "fedora" ]]; then
OS_GROUP_ID="fedora" OS_GROUP_ID="fedora"
print_os_group_id_functions=(print_os_group_id{,_alike,_unofficial}) print_os_group_id_functions=(print_os_group_id{,_alike,_unofficial})
elif [[ "$OS_DISTRO_ID" =~ ^(opensuse-leap|opensuse-tumbleweed)$ ]] || [[ "$OS_DISTRO_ID_LIKE" =~ ^(opensuse|suse)(\ (opensuse|suse))?$ ]]; then
OS_GROUP_ID="suse"
INSTALL_VIA_NIX=true
print_os_group_id_functions=(print_os_group_id{,_unsupported})
elif [[ "$OS_DISTRO_ID" == "debian" || "$OS_DISTRO_ID_LIKE" == "debian" ]]; then
OS_GROUP_ID="debian"
INSTALL_VIA_NIX=true
print_os_group_id_functions=(print_os_group_id{,_unsupported})
else else
OS_GROUP_ID="fallback" OS_GROUP_ID="fallback"
INSTALL_VIA_NIX=true INSTALL_VIA_NIX=true
print_os_group_id_functions=(print_os_group_id{,_fallback,_force_vianix}) print_os_group_id_functions=(print_os_group_id{,_fallback,_unsupported})
fi fi
#################### ####################