Improve dependency install process

This commit is contained in:
clsty
2025-10-02 01:57:20 +08:00
parent 852172a7ff
commit 4085b4a74a
6 changed files with 114 additions and 70 deletions
+12
View File
@@ -32,6 +32,17 @@ ii_exec() {
"$@"
err=$?;if [ ! $err -eq 0 ];then echo "[---EXIT $err---]";else echo "[---SUCCESS---]";fi
}
ii_check_distro_id() {
OS_RELEASE_FILE=/etc/os-release
if [[ -f "$OS_RELEASE_FILE" ]]; then
OS_DISTRO_ID=$(awk -F'=' '/^ID=/ { gsub("\"","",$2); print tolower($2) }' ${OS_RELEASE_FILE} 2> /dev/null)
OS_DISTRO_ID_LIKE=$(awk -F'=' '/^ID_LIKE=/ { gsub("\"","",$2); print tolower($2) }' ${OS_RELEASE_FILE} 2> /dev/null)
echo "distro ID: $OS_DISTRO_ID"
echo "distro ID_LIKE: $OS_DISTRO_ID_LIKE"
else
echo "$OS_RELEASE_FILE does not exist."
fi
}
ii_check_distro() {
lsb_release -a || cat /etc/os-release || cat /etc/lsb-release
}
@@ -46,6 +57,7 @@ x git remote get-url origin
x git rev-parse HEAD
e "Checking distro"
x ii_check_distro_id
x ii_check_distro
e "Checking variables"
+1 -7
View File
@@ -15,13 +15,7 @@ source ./scriptdata/install-greeting.sh
#####################################################################################
if [[ "${SKIP_ALLDEPS}" != true ]]; then
printf "${COLOR_CYAN}[$0]: 1. Install dependencies\n${COLOR_RESET}"
if [[ "${INSTALL_VIA_NIX}" == "true" ]]; then
source ./scriptdata/install-deps-nix.sh
elif [[ "${OS_DISTRO_ID}" == "arch" || "${OS_DISTRO_ID_LIKE}" == "arch" ]]; then
source ./scriptdata/install-deps-arch.sh
else
source ./scriptdata/install-deps-any.sh
fi
source ./scriptdata/install-deps.sh
fi
#####################################################################################
if [[ "${SKIP_ALLSETUPS}" != true ]]; then
+100
View File
@@ -0,0 +1,100 @@
# This script is meant to be sourced.
# It's not for directly running.
####################
# Detect architecture
# Helpful link(s):
# http://stackoverflow.com/questions/45125516
export MACHINE_ARCH=$(uname -m)
case $MACHINE_ARCH in
"x86_64") sleep 0;;
*)
printf "${COLOR_YELLOW}"
printf "===WARNING===\n"
printf "Detected machine architecture: ${MACHINE_ARCH}\n"
printf "This script only supports x86_64.\n"
printf "It is very likely to fail when installing dependencies on your machine.\n"
printf "\n"
printf "${COLOR_RESET}"
;;
esac
####################
# Detect distro
# Helpful link(s):
# http://stackoverflow.com/questions/29581754
# https://github.com/which-distro/os-release
export OS_RELEASE_FILE=${OS_RELEASE_FILE:-/etc/os-release}
test -f ${OS_RELEASE_FILE} || \
( echo "${OS_RELEASE_FILE} does not exist. Aborting..." ; exit 1 ; )
export OS_DISTRO_ID=$(awk -F'=' '/^ID=/ { gsub("\"","",$2); print tolower($2) }' ${OS_RELEASE_FILE} 2> /dev/null)
export OS_DISTRO_ID_LIKE=$(awk -F'=' '/^ID_LIKE=/ { gsub("\"","",$2); print tolower($2) }' ${OS_RELEASE_FILE} 2> /dev/null)
if [[ "$INSTALL_VIA_NIX" == "true" ]]; then
printf "${COLOR_YELLOW}"
printf "===WARNING===\n"
printf "Nix will be used to install dependencies.\n"
printf "The process is still WIP.\n"
printf "Only continue at your own risk.\n"
printf "\n"
printf "${COLOR_RESET}"
source ./scriptdata/install-deps-nix.sh
elif [[ "$OS_DISTRO_ID" =~ ^(arch|endeavouros)$ ]]; then
printf "${COLOR_GREEN}"
printf "===INFO===\n"
printf "Detected distro ID: ${OS_DISTRO_ID}\n"
printf "\n"
printf "${COLOR_RESET}"
source ./scriptdata/install-deps-arch.sh
elif [[ -f "./scriptdata/install-deps-${OS_DISTRO_ID}.sh" ]]; then
printf "${COLOR_BLUE}"
printf "===NOTICE===\n"
printf "Detected distro ID: ${OS_DISTRO_ID}\n"
printf "./scriptdata/install-deps-${OS_DISTRO_ID}.sh detected and will be used.\n"
printf "It is not officially supported by github:end-4/dots-hyprland .\n"
printf "Use it only at your own risk.\n"
printf "\n"
printf "${COLOR_RESET}"
source ./scriptdata/install-deps-${OS_DISTRO_ID}.sh
elif [[ "$OS_DISTRO_ID_LIKE" == "arch" ]]; then
printf "${COLOR_YELLOW}"
printf "===WARNING===\n"
printf "Detected distro ID: ${OS_DISTRO_ID}\n"
printf "Detected distro ID_LIKE: ${OS_DISTRO_ID_LIKE}\n"
printf "This script supports Arch Linux, so it should also work for your distro ideally.\n"
printf "Still, there is a chance that it not works as expected or even fails.\n"
printf "Use it only at your own risk.\n"
printf "\n"
printf "${COLOR_RESET}"
source ./scriptdata/install-deps-arch.sh
else
printf "${COLOR_RED}"
printf "===URGENT===\n"
printf "Detected distro ID: ${OS_DISTRO_ID}\n"
printf "Detected distro ID_LIKE: ${OS_DISTRO_ID_LIKE}\n"
printf "No suitable dependency installation script found.\n"
printf "./scriptdata/install-deps-fallback.sh will be used.\n"
printf "It may disrupt your system and will likely fail without your manual intervention.\n"
printf "Only continue at your own risk.\n"
printf "${COLOR_RESET}"
printf "${BG_COLOR_RED}"
printf "To tell you the truth, it is completely not worky at this time. The prompt here is only for testing and WIP. PLEASE JUST QUIT IMMEDIATELY.${COLOR_RESET}\n"
read -p "Still continue? [y/N] ====> " p
case $p in
[yY]) sleep 0 ;;
*) exit 1 ;;
esac
source ./scriptdata/install-deps-fallback.sh
fi
-62
View File
@@ -32,65 +32,3 @@ case $ask in
printf "${COLOR_RESET}"
;;
esac
####################
# Detect architecture
# Helpful link(s):
# http://stackoverflow.com/questions/45125516
export MACHINE_ARCH=$(uname -m)
case $MACHINE_ARCH in
"x86_64") sleep 0;;
*)
printf "${COLOR_YELLOW}"
printf "===WARNING===\n"
printf "Detected machine architecture: ${MACHINE_ARCH}\n"
printf "This script only supports x86_64.\n"
printf "It is very likely to fail when installing dependencies on your machine.\n"
printf "\n"
printf "${COLOR_RESET}"
;;
esac
####################
# Detect distro
# Helpful link(s):
# http://stackoverflow.com/questions/29581754
# https://github.com/which-distro/os-release
export OS_RELEASE_FILE=${OS_RELEASE_FILE:-/etc/os-release}
test -f ${OS_RELEASE_FILE} || \
( echo "${OS_RELEASE_FILE} does not exist. Aborting..." ; exit 1 ; )
export OS_DISTRO_ID=$(awk -F'=' '/^ID=/ { gsub("\"","",$2); print tolower($2) }' ${OS_RELEASE_FILE} 2> /dev/null)
export OS_DISTRO_ID_LIKE=$(awk -F'=' '/^ID_LIKE=/ { gsub("\"","",$2); print tolower($2) }' ${OS_RELEASE_FILE} 2> /dev/null)
case $OS_DISTRO_ID in
"arch"|"endeavouros"|"cachyos") sleep 0;;
*)
case $OS_DISTRO_ID_LIKE in
"arch")
printf "${COLOR_YELLOW}"
printf "===WARNING===\n"
printf "Detected distro ID: ${OS_DISTRO_ID}\n"
printf "Detected distro ID_LIKE: ${OS_DISTRO_ID_LIKE}\n"
printf "This script supports Arch Linux, so it should also work for your distro ideally.\n"
printf "Still, there is a chance that it not works as expected or even fails.\n"
printf "\n"
printf "${COLOR_RESET}"
;;
*)
printf "${COLOR_RED}"
printf "===URGENT===\n"
printf "Detected distro ID: ${OS_DISTRO_ID}\n"
printf "Currently, only Arch(-based) distros are supported.\n"
printf "If you continue, this script will still move on and try to install some dependencies for you.\n"
printf "But it may disrupt your system and will likely fail without your manual intervention. Only continue at your own risk.\n"
printf "${COLOR_RESET}"
printf "${BG_COLOR_RED}"
printf "To tell you the truth, it is completely not worky at this time. The prompt here is only for testing and WIP. PLEASE JUST QUIT IMMEDIATELY.${COLOR_RESET}\n"
read -p "Still continue? [y/N] ====> " p
case $p in
[yY]) sleep 0 ;;
*) exit 1 ;;
esac
;;
esac
;;
esac
+1 -1
View File
@@ -58,7 +58,7 @@ while true ; do
-c|--clean) shift;;
## Ones without parameter
-f|--force) ask=false;shift;;
--skip-alldeps) SKIP_PLASMAINTG=true;shift;;
--skip-alldeps) SKIP_ALLDEPS=true;shift;;
--skip-allsetups) SKIP_ALLSETUPS=true;shift;;
--skip-allfiles) SKIP_ALLFILES=true;shift;;
-s|--skip-sysupdate) SKIP_SYSUPDATE=true;shift;;