dotfiles/.chezmoiscripts/run_onchange_before_linux-install-packages.sh.tmpl
2025-04-23 23:23:12 +08:00

82 lines
2.0 KiB
Cheetah

{{ if eq .chezmoi.os "linux" -}}
{{ if eq .chezmoi.osRelease.id "manjaro" -}}
{{- /* https://github.com/mriehl/dotfiles/blob/master/run_onchange_packages.sh.tmpl */ -}}
#!/usr/bin/env bash
wait_for_pacman_unlock() {
echo "檢查 pacman 鎖..."
while \
[ -e /var/lib/pacman/db.lck ] || \
pgrep -x pacman >/dev/null || \
pgrep -x packagekitd >/dev/null || \
pgrep -x packagekit >/dev/null; do
sleep 1
done
}
pacmanForce_packages=( {{.packages.linux.manjaro.pacman_force | quoteList | join " " }})
pacman_packages=( {{.packages.linux.manjaro.pacman | quoteList | join " " }})
aur_packages=( {{.packages.linux.manjaro.aur | quoteList | join " " }})
installed_packages=($(pacman -Qq))
is_installed() {
[[ " ${installed_packages[*]} " =~ " $1 " ]]
}
to_install_pacmanForce=()
for package in "${pacmanForce_packages[@]}"; do
to_install_pacmanForce+=("$package")
done
# 等待鎖定檔案被移除
wait_for_pacman_unlock
if [[ ${#to_install_pacmanForce[@]} -gt 0 ]]; then
echo " - Installing missing packages via pacman: ${to_install_pacmanForce[@]}"
sudo pacman -S --needed --noconfirm "${to_install_pacmanForce[@]}"
fi
# 等待鎖定檔案被移除
wait_for_pacman_unlock
to_install_pacman=()
for package in "${pacman_packages[@]}"; do
if ! is_installed "$package"; then
to_install_pacman+=("$package")
fi
done
if [[ ${#to_install_pacman[@]} -gt 0 ]]; then
echo " - Installing missing packages via pacman: ${to_install_pacman[@]}"
sudo pacman -S --needed --noconfirm "${to_install_pacman[@]}"
fi
# 等待鎖定檔案被移除
wait_for_pacman_unlock
if ! is_installed "yay"; then
echo " - Installing yay"
sudo pacman -S --needed --noconfirm yay
fi
to_install_aur=()
for package in "${aur_packages[@]}"; do
if ! is_installed "$package"; then
to_install_aur+=("$package")
fi
done
# 等待鎖定檔案被移除
wait_for_pacman_unlock
if [[ ${#to_install_aur[@]} -gt 0 ]]; then
echo " - Installing missing AUR packages via yay: ${to_install_aur[@]}"
yay -S --noconfirm "${to_install_aur[@]}"
fi
{{ end -}}
{{ end -}}