Skip to content

Commit 98338c0

Browse files
RanMdkRHYME7
andauthored
Improve dry-run consistency and avoid unintended modifications (#762)
* refactor: apply consistent dry-run behavior and avoid unintended config changes - Prevent real system modifications when dry-run mode is active (e.g., bootloader entries). - Ensure 'skip' options (like grub theme) do not alter current configuration. - Omitted 'sed' lines that unnecessarily modified out existing GRUB_THEME values. - Unified dry-run checks across the script for consistency and predictability. - Style: Improved readability by changing contrasts and minor settings. Ensures the script behaves as intended during dry-run * chore: use if instead of exit to prevent bugs * fix: Wrong assumptions with nviida flag --------- Co-authored-by: Khing <[email protected]>
1 parent 23c7418 commit 98338c0

File tree

9 files changed

+117
-63
lines changed

9 files changed

+117
-63
lines changed

Scripts/global_fn.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ print_log() {
151151
shift 2
152152
;; # critical
153153
-warn)
154-
echo -ne "WARNING :: \e[97;43m $2 \e[0m :: "
154+
echo -ne "WARNING :: \e[30;43m $2 \e[0m :: "
155155
shift 2
156156
;; # warning
157157
+)

Scripts/install.sh

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -68,10 +68,18 @@ Usage: $0 [options]
6868
d : install hyprland [d]efaults without configs --noconfirm
6969
r : [r]estore config files
7070
s : enable system [s]ervices
71-
n : ignore/[n]o [n]vidia actions
71+
n : ignore/[n]o [n]vidia actions (-irsn to ignore nvidia)
7272
h : re-evaluate S[h]ell
7373
m : no the[m]e reinstallations
7474
t : [t]est run without executing (-irst to dry run all)
75+
76+
NOTE:
77+
running without args is equivalent to -irs
78+
to ignore nvidia, run -irsn
79+
80+
WRONG:
81+
install.sh -n # This will not work
82+
7583
EOF
7684
exit 1
7785
;;
@@ -128,10 +136,11 @@ EOF
128136
cp "${scrDir}/pkg_core.lst" "${scrDir}/install_pkg.lst"
129137
trap 'mv "${scrDir}/install_pkg.lst" "${cacheDir}/logs/${HYDE_LOG}/install_pkg.lst"' EXIT
130138

139+
echo -e "\n#user packages" >>"${scrDir}/install_pkg.lst" # Add a marker for user packages
131140
if [ -f "${custom_pkg}" ] && [ -n "${custom_pkg}" ]; then
132141
cat "${custom_pkg}" >>"${scrDir}/install_pkg.lst"
133142
fi
134-
echo -e "\n#user packages" >>"${scrDir}/install_pkg.lst" # Add a marker for user packages
143+
135144
#--------------------------------#
136145
# add nvidia drivers to the list #
137146
#--------------------------------#
@@ -142,7 +151,7 @@ EOF
142151
done
143152
nvidia_detect --drivers >>"${scrDir}/install_pkg.lst"
144153
else
145-
print_log -warn "Nvidia" " :: " "Nvidia GPU detected but ignored..."
154+
print_log -warn "Nvidia" "Nvidia GPU detected but ignored..."
146155
fi
147156
fi
148157
nvidia_detect --verbose
@@ -219,7 +228,7 @@ EOF
219228
#--------------------------------#
220229
# install packages from the list #
221230
#--------------------------------#
222-
[ ${flg_DryRun} -eq 1 ] || "${scrDir}/install_pkg.sh" "${scrDir}/install_pkg.lst"
231+
"${scrDir}/install_pkg.sh" "${scrDir}/install_pkg.lst"
223232
fi
224233

225234
#---------------------------#
@@ -228,7 +237,7 @@ fi
228237
if [ ${flg_Restore} -eq 1 ]; then
229238
cat <<"EOF"
230239
231-
_ _d
240+
_ _
232241
___ ___ ___| |_ ___ ___|_|___ ___
233242
| _| -_|_ -| _| . | _| | | . |
234243
|_| |___|___|_| |___|_| |_|_|_|_ |
@@ -298,13 +307,15 @@ EOF
298307
fi
299308

300309
if [ $flg_Install -eq 1 ]; then
301-
print_log -stat "\nInstallation" "completed"
310+
echo ""
311+
print_log -g "Installation" " :: " "COMPLETED!"
302312
fi
303-
print_log -stat "Log" "View logs at ${cacheDir}/logs/${HYDE_LOG}"
313+
print_log -b "Log" " :: " -y "View logs at ${cacheDir}/logs/${HYDE_LOG}"
304314
if [ $flg_Install -eq 1 ] ||
305315
[ $flg_Restore -eq 1 ] ||
306-
[ $flg_Service -eq 1 ]; then
307-
print_log -stat "HyDE" "It is recommended to reboot the system after installing or upgrading HyDE. Do you want to reboot the system now? (y/N)"
316+
[ $flg_Service -eq 1 ] &&
317+
[ $flg_DryRun -ne 1 ]; then
318+
print_log -stat "HyDE" "It is not recommended to use newly installed or upgraded HyDE without rebooting the system. Do you want to reboot the system? (y/N)"
308319
read -r answer
309320

310321
if [[ "$answer" == [Yy] ]]; then

Scripts/install_aur.sh

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,12 @@ fi
1313

1414
# shellcheck disable=SC2154
1515
if chk_list "aurhlpr" "${aurList[@]}"; then
16-
print_log -sec "AUR" -stat "detected" "${aurhlpr}"
16+
print_log -sec "AUR" -stat "Detected" "${aurhlpr}"
1717
exit 0
1818
fi
1919

20+
echo "llego aqui :O"
21+
exit 1
2022
aurhlpr="${1:-yay-bin}"
2123

2224
if [ -d "$HOME/Clone" ]; then

Scripts/install_pkg.sh

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,11 @@ while read -r pkg deps; do
5959
if pkg_installed "${pkg}"; then
6060
print_log -y "[skip] " "${pkg}"
6161
elif pkg_available "${pkg}"; then
62-
repo=$(pacman -Si "${pkg}" | awk -F ': ' '/Repository / {print $2}')
63-
print_log -b "[queue] " -g "${repo}" -b "::" "${pkg}"
62+
repo=$(pacman -Si "${pkg}" | awk -F ': ' '/Repository / {print $2}' | tr '\n' ' ')
63+
print_log -b "[queue] " "${pkg}" -b " :: " -g "${repo}"
6464
archPkg+=("${pkg}")
6565
elif aur_available "${pkg}"; then
66-
print_log -b "[queue] " -g "aur" -b "::" "${pkg}"
66+
print_log -b "[queue] " "${pkg}" -b " :: " -g "aur"
6767
aurhPkg+=("${pkg}")
6868
else
6969
print_log -r "[error] " "unknown package ${pkg}..."
@@ -72,14 +72,24 @@ done < <(cut -d '#' -f 1 "${listPkg}")
7272

7373
IFS=${ofs}
7474

75-
if [ "${flg_DryRun}" -ne 1 ]; then
76-
if [[ ${#archPkg[@]} -gt 0 ]]; then
77-
print_log -b "[install] " "arch packages..."
78-
sudo pacman ${use_default:+"$use_default"} -S "${archPkg[@]}"
79-
fi
75+
install_packages() {
76+
local -n pkg_array=$1
77+
local pkg_type=$2
78+
local install_cmd=$3
8079

81-
if [[ ${#aurhPkg[@]} -gt 0 ]]; then
82-
print_log -b "[install] " "aur packages..."
83-
"${aurhlpr}" ${use_default:+"$use_default"} -S "${aurhPkg[@]}"
80+
if [[ ${#pkg_array[@]} -gt 0 ]]; then
81+
print_log -b "[install] " "$pkg_type packages..."
82+
if [ "${flg_DryRun}" -eq 1 ]; then
83+
for pkg in "${pkg_array[@]}"; do
84+
print_log -b "[pkg] " "${pkg}"
85+
done
86+
else
87+
$install_cmd ${use_default:+"$use_default"} -S "${pkg_array[@]}"
88+
fi
8489
fi
85-
fi
90+
}
91+
92+
echo ""
93+
install_packages archPkg "arch" "sudo pacman"
94+
echo ""
95+
install_packages aurhPkg "aur" "${aurhlpr}"

Scripts/install_pre.sh

Lines changed: 32 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -15,20 +15,24 @@ flg_DryRun=${flg_DryRun:-0}
1515

1616
# grub
1717
if pkg_installed grub && [ -f /boot/grub/grub.cfg ]; then
18-
print_log -sec "bootloader" -stat "detected" "grub..."
18+
print_log -sec "bootloader" -b "detected :: " "grub..."
1919

2020
if [ ! -f /etc/default/grub.hyde.bkp ] && [ ! -f /boot/grub/grub.hyde.bkp ]; then
21-
print_log -g "[bootloader] " -b "configure :: " "grub"
22-
sudo cp /etc/default/grub /etc/default/grub.hyde.bkp
23-
sudo cp /boot/grub/grub.cfg /boot/grub/grub.hyde.bkp
21+
[ "${flg_DryRun}" -eq 1 ] || sudo cp /etc/default/grub /etc/default/grub.hyde.bkp
22+
[ "${flg_DryRun}" -eq 1 ] || sudo cp /boot/grub/grub.cfg /boot/grub/grub.hyde.bkp
2423

24+
# Only if the nvidia installation doesn't skip
2525
if nvidia_detect; then
26-
print_log -g "[bootloader] " -b "configure :: " "nvidia detected, adding nvidia_drm.modeset=1 to boot option..."
27-
gcld=$(grep "^GRUB_CMDLINE_LINUX_DEFAULT=" "/etc/default/grub" | cut -d'"' -f2 | sed 's/\b nvidia_drm.modeset=.\b//g')
28-
sudo sed -i "/^GRUB_CMDLINE_LINUX_DEFAULT=/c\GRUB_CMDLINE_LINUX_DEFAULT=\"${gcld} nvidia_drm.modeset=1\"" /etc/default/grub
26+
if [ ${flg_Nvidia} -eq 1 ]; then
27+
print_log -g "[bootloader] " -b "configure :: " "nvidia detected, adding nvidia_drm.modeset=1 to boot option..."
28+
gcld=$(grep "^GRUB_CMDLINE_LINUX_DEFAULT=" "/etc/default/grub" | cut -d'"' -f2 | sed 's/\b nvidia_drm.modeset=.\b//g')
29+
[ "${flg_DryRun}" -eq 1 ] || sudo sed -i "/^GRUB_CMDLINE_LINUX_DEFAULT=/c\GRUB_CMDLINE_LINUX_DEFAULT=\"${gcld} nvidia_drm.modeset=1\"" /etc/default/grub
30+
else
31+
print_log -g "[bootloader] " -b "skip :: " "nvidia detected, skipping nvidia_drm.modeset=1 to boot option..."
32+
fi
2933
fi
3034

31-
print_log -r "[bootloader] " -b " :: " "Select grub theme:" -r "\n[1]" -b " Retroboot (dark)" -r "\n[2]" -b " Pochita (light)"
35+
print_log -g "[bootloader] " "Select grub theme:" -y "\n[1]" -y " Retroboot (dark)" -y "\n[2]" -y " Pochita (light)"
3236
read -r -p " :: Press enter to skip grub theme <or> Enter option number : " grubopt
3337
case ${grubopt} in
3438
1) grubtheme="Retroboot" ;;
@@ -37,20 +41,21 @@ if pkg_installed grub && [ -f /boot/grub/grub.cfg ]; then
3741
esac
3842

3943
if [ "${grubtheme}" == "None" ]; then
40-
print_log -g "[bootloader] " -b "skip :: " "grub theme..."
41-
sudo sed -i "s/^GRUB_THEME=/#GRUB_THEME=/g" /etc/default/grub
44+
print_log -g "[bootloader] " -b "skip :: " "grub theme selection skipped..."
45+
echo ""
4246
else
4347
print_log -g "[bootloader] " -b "set :: " "grub theme // ${grubtheme}"
48+
echo ""
4449
# shellcheck disable=SC2154
45-
sudo tar -xzf "${cloneDir}/Source/arcs/Grub_${grubtheme}.tar.gz" -C /usr/share/grub/themes/
46-
sudo sed -i "/^GRUB_DEFAULT=/c\GRUB_DEFAULT=saved
50+
[ "${flg_DryRun}" -eq 1 ] || sudo tar -xzf "${cloneDir}/Source/arcs/Grub_${grubtheme}.tar.gz" -C /usr/share/grub/themes/
51+
[ "${flg_DryRun}" -eq 1 ] || sudo sed -i "/^GRUB_DEFAULT=/c\GRUB_DEFAULT=saved
4752
/^GRUB_GFXMODE=/c\GRUB_GFXMODE=1280x1024x32,auto
4853
/^GRUB_THEME=/c\GRUB_THEME=\"/usr/share/grub/themes/${grubtheme}/theme.txt\"
4954
/^#GRUB_THEME=/c\GRUB_THEME=\"/usr/share/grub/themes/${grubtheme}/theme.txt\"
5055
/^#GRUB_SAVEDEFAULT=true/c\GRUB_SAVEDEFAULT=true" /etc/default/grub
56+
[ "${flg_DryRun}" -eq 1 ] || sudo grub-mkconfig -o /boot/grub/grub.cfg
5157
fi
5258

53-
sudo grub-mkconfig -o /boot/grub/grub.cfg
5459
else
5560
print_log -y "[bootloader] " -b "exist :: " "grub is already configured..."
5661
fi
@@ -62,11 +67,13 @@ if pkg_installed systemd && nvidia_detect && [ "$(bootctl status 2>/dev/null | a
6267

6368
if [ "$(find /boot/loader/entries/ -type f -name '*.conf.hyde.bkp' 2>/dev/null | wc -l)" -ne "$(find /boot/loader/entries/ -type f -name '*.conf' 2>/dev/null | wc -l)" ]; then
6469
print_log -g "[bootloader] " -b " :: " "nvidia detected, adding nvidia_drm.modeset=1 to boot option..."
65-
find /boot/loader/entries/ -type f -name "*.conf" | while read -r imgconf; do
66-
sudo cp "${imgconf}" "${imgconf}.hyde.bkp"
67-
sdopt=$(grep -w "^options" "${imgconf}" | sed 's/\b quiet\b//g' | sed 's/\b splash\b//g' | sed 's/\b nvidia_drm.modeset=.\b//g')
68-
sudo sed -i "/^options/c${sdopt} quiet splash nvidia_drm.modeset=1" "${imgconf}"
69-
done
70+
if [[ "${flg_DryRun}" -ne 1 ]]; then
71+
find /boot/loader/entries/ -type f -name "*.conf" | while read -r imgconf; do
72+
sudo cp "${imgconf}" "${imgconf}.hyde.bkp"
73+
sdopt=$(grep -w "^options" "${imgconf}" | sed 's/\b quiet\b//g' | sed 's/\b splash\b//g' | sed 's/\b nvidia_drm.modeset=.\b//g')
74+
sudo sed -i "/^options/c${sdopt} quiet splash nvidia_drm.modeset=1" "${imgconf}"
75+
done
76+
fi
7077
else
7178
print_log -y "[bootloader] " -stat "skipped" "systemd-boot is already configured..."
7279
fi
@@ -113,7 +120,12 @@ else
113120
;;
114121
esac
115122
if [ "${is_chaotic_aur}" == true ]; then
116-
sudo pacman-key --init
117-
sudo "${scrDir}/chaotic_aur.sh" --install
123+
print_log -sec "Chaotic-aur" -stat "Installation" "Installing Chaotic AUR..."
124+
if [[ "${flg_DryRun}" -ne 1 ]]; then
125+
sudo pacman-key --init
126+
sudo "${scrDir}/chaotic_aur.sh" --install
127+
fi
128+
else
129+
print_log -sec "Chaotic-aur" -stat "Skipped" "Chaotic AUR installation skipped..."
118130
fi
119131
fi

Scripts/install_pst.sh

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,13 @@ if ! source "${scrDir}/global_fn.sh"; then
1212
fi
1313

1414
cloneDir="${cloneDir:-$CLONE_DIR}"
15+
flg_DryRun=${flg_DryRun:-0}
1516

1617
# sddm
1718
if pkg_installed sddm; then
1819
print_log -c "[DISPLAYMANAGER] " -b "detected :: " "sddm"
1920
if [ ! -d /etc/sddm.conf.d ]; then
20-
sudo mkdir -p /etc/sddm.conf.d
21+
[ ${flg_DryRun} -eq 1 ] || sudo mkdir -p /etc/sddm.conf.d
2122
fi
2223
if [ ! -f /etc/sddm.conf.d/backup_the_hyde_project.conf ] || [ "${HYDE_INSTALL_SDDM}" = true ]; then
2324
print_log -g "[DISPLAYMANAGER] " -b " :: " "configuring sddm..."
@@ -29,10 +30,14 @@ if pkg_installed sddm; then
2930
*) sddmtheme="Corners" ;;
3031
esac
3132

32-
sudo tar -xzf "${cloneDir}/Source/arcs/Sddm_${sddmtheme}.tar.gz" -C /usr/share/sddm/themes/
33-
sudo touch /etc/sddm.conf.d/the_hyde_project.conf
34-
sudo cp /etc/sddm.conf.d/the_hyde_project.conf /etc/sddm.conf.d/backup_the_hyde_project.conf
35-
sudo cp /usr/share/sddm/themes/${sddmtheme}/the_hyde_project.conf /etc/sddm.conf.d/
33+
if [[ ${flg_DryRun} -ne 1 ]]; then
34+
sudo tar -xzf "${cloneDir}/Source/arcs/Sddm_${sddmtheme}.tar.gz" -C /usr/share/sddm/themes/
35+
sudo touch /etc/sddm.conf.d/the_hyde_project.conf
36+
sudo cp /etc/sddm.conf.d/the_hyde_project.conf /etc/sddm.conf.d/backup_the_hyde_project.conf
37+
sudo cp /usr/share/sddm/themes/${sddmtheme}/the_hyde_project.conf /etc/sddm.conf.d/
38+
fi
39+
40+
print_log -g "[DISPLAYMANAGER] " -b " :: " "sddm configured with ${sddmtheme} theme..."
3641
else
3742
print_log -y "[DISPLAYMANAGER] " -b " :: " "sddm is already configured..."
3843
fi
@@ -53,25 +58,26 @@ if pkg_installed dolphin && pkg_installed xdg-utils; then
5358
print_log -g "[FILEMANAGER] " -b " :: " "setting $(xdg-mime query default "inode/directory") as default file explorer..."
5459

5560
else
56-
print_log -y "[FILEMANAGER] " -b " :: " "dolphin is not installed..."
57-
print_log -y "[FILEMANAGER] " -b " :: " "Setting $(xdg-mime query default "inode/directory") as default file explorer..."
61+
print_log -y "[FILEMANAGER]" -b " :: " "dolphin is not installed..."
62+
print_log -y "[FILEMANAGER]" -b " :: " "Setting $(xdg-mime query default "inode/directory") as default file explorer..."
5863
fi
5964

6065
# shell
6166
"${scrDir}/restore_shl.sh"
6267

6368
# flatpak
6469
if ! pkg_installed flatpak; then
65-
print_log -r "[FLATPAK]" -b "list :: " "flatpak application"
70+
echo ""
71+
print_log -g "[FLATPAK]" -b " list :: " "flatpak application"
6672
awk -F '#' '$1 != "" {print "["++count"]", $1}' "${scrDir}/extra/custom_flat.lst"
6773
prompt_timer 60 "Install these flatpaks? [Y/n]"
6874
fpkopt=${PROMPT_INPUT,,}
6975

7076
if [ "${fpkopt}" = "y" ]; then
71-
print_log -g "[FLATPAK]" -b "install :: " "flatpaks"
72-
"${scrDir}/extra/install_fpk.sh"
77+
print_log -g "[FLATPAK]" -b " install :: " "flatpaks"
78+
[ ${flg_DryRun} -eq 1 ] || "${scrDir}/extra/install_fpk.sh"
7379
else
74-
print_log -y "[FLATPAK]" -b "skip :: " "flatpak installation"
80+
print_log -y "[FLATPAK]" -b " skip :: " "flatpak installation"
7581
fi
7682

7783
else

Scripts/restore_cfg.sh

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ deploy_psv() {
100100
# Call the function pkg_installed with the argument pkg_chk. If the function returns false (the package is not installed), then...
101101
if ! pkg_installed "${pkg_chk}"; then
102102
# Print a message stating that the current configuration is being skipped because a dependency is not installed
103-
print_log -y "[skip] " -r "missing" -b " :: " "${pth}/${cfg} " -c "missing dependency" "'${pkg_chk}' as dependency"
103+
print_log -y "[skip] " -r "missing" -b " :: " -y "missing dependency" -g " '${pkg_chk}'" -r " --> " "${pth}/${cfg}"
104104
# Skip the rest of the current loop iteration and proceed to the next iteration
105105
continue 2
106106
fi
@@ -137,7 +137,7 @@ deploy_psv() {
137137
"O")
138138
[ "${flg_DryRun}" -ne 1 ] && mv "${pth}/${cfg_chk}" "${BkpDir}${tgt}"
139139
[ "${flg_DryRun}" -ne 1 ] && cp -r "${CfgDir}${tgt}/${cfg_chk}" "${pth}"
140-
print_log -r "[move to backup]" " > " -r "[overwrite]" -b " :: " "${pth}" -r " <-- " "${CfgDir}${tgt}/${cfg_chk}"
140+
print_log -r "[move to backup]" " > " -r "[overwrite]" -b " :: " "${pth}" -r " <-- " "${CfgDir}${tgt}/${cfg_chk}"
141141
;;
142142
"S")
143143
[ "${flg_DryRun}" -ne 1 ] && cp -r "${pth}/${cfg_chk}" "${BkpDir}${tgt}"
@@ -147,9 +147,9 @@ deploy_psv() {
147147
"P")
148148
[ "${flg_DryRun}" -ne 1 ] && cp -r "${pth}/${cfg_chk}" "${BkpDir}${tgt}"
149149
if ! [ "${flg_DryRun}" -ne 1 ] && cp -rn "${CfgDir}${tgt}/${cfg_chk}" "${pth}" 2>/dev/null; then
150-
print_log -g "[copy to backup]" " > " -g "[populate]" -b " :: " "${pth}${tgt}/${cfg_chk}"
150+
print_log -g "[copy to backup]" " > " -y "[populate]" -b " :: " "${pth}${tgt}/${cfg_chk}"
151151
else
152-
print_log -g "[copy to backup]" " > " -g "[preserved]" -b " :: " "${pth}" + 208 " <-- " "${CfgDir}${tgt}/${cfg_chk}"
152+
print_log -g "[copy to backup]" " > " -y "[preserved]" -b " :: " "${pth}" + 208 " <-- " "${CfgDir}${tgt}/${cfg_chk}"
153153
fi
154154
;;
155155
esac
@@ -200,7 +200,7 @@ fi
200200

201201
file_extension="${CfgLst##*.}"
202202
echo ""
203-
print_log -g "[file extension]" -b "::" "${file_extension}"
203+
print_log -g "[file extension]" -b " :: " "${file_extension}"
204204
case "${file_extension}" in
205205
"lst")
206206
deploy_list "${CfgLst}"
@@ -212,3 +212,4 @@ json)
212212
deploy_json "${CfgLst}"
213213
;;
214214
esac
215+
echo ""

0 commit comments

Comments
 (0)