summaryrefslogtreecommitdiffstats
path: root/.local
diff options
context:
space:
mode:
authorThomas Vanbesien <tvanbesi@proton.me>2026-06-01 19:49:10 +0200
committerThomas Vanbesien <tvanbesi@proton.me>2026-06-01 19:49:10 +0200
commit060d7b6455eb9001ba16b0807849c3851b0fbe02 (patch)
tree8f04183f9f7514ac43370d15caed35156e000509 /.local
parentf6b48b1be68a5100823cfe7fc81fb789cb0cce79 (diff)
downloaddotfiles-060d7b6455eb9001ba16b0807849c3851b0fbe02.tar.gz
dotfiles-060d7b6455eb9001ba16b0807849c3851b0fbe02.zip
fix(dotfiles): sync don't use sudo with yay
Diffstat (limited to '.local')
-rwxr-xr-x.local/bin/dotfiles20
1 files changed, 14 insertions, 6 deletions
diff --git a/.local/bin/dotfiles b/.local/bin/dotfiles
index 2e31e57..4a512b6 100755
--- a/.local/bin/dotfiles
+++ b/.local/bin/dotfiles
@@ -20,24 +20,31 @@ clipboard_hint() {
# packages → nameref to an array containing a list of packages to sync
# sync_flag → additional flags to pass to cmd
sync_packages() {
- local cmd="${1:?cmd argument missing}"
+ case "${1:?cmd argument missing}" in
+ pacman | yay) cmd=("$1") ;;
+ *)
+ echo "usage: sync_packages pacman|yay …"
+ exit 1
+ ;;
+ esac
local -n packages="${2:?packages argument missing}"
shift 2
local sync_args=("$@")
readarray -t packages_to_install < <(
comm -13 \
- <(sort <("$cmd" --query --quiet)) \
+ <(sort <("${cmd[@]}" --query --quiet)) \
<(sort <(printf '%s\n' "${packages[@]}"))
)
readarray -t packages_to_upgrade < <(
comm -12 \
- <(sort <("$cmd" --query --upgrades --quiet)) \
+ <(sort <("${cmd[@]}" --query --upgrades --quiet)) \
<(sort <(printf '%s\n' "${packages[@]}"))
)
local packages_to_sync=("${packages_to_install[@]}" "${packages_to_upgrade[@]}")
if ((${#packages_to_sync[@]} == 0)); then return; fi
if prompt_for_install "Out-of-sync packages: ${packages_to_sync[*]}"; then
- sudo "$cmd" --sync "${sync_args[@]}" "${packages_to_sync[@]}"
+ if [[ ${cmd[0]} == pacman ]]; then cmd=(sudo pacman); fi
+ "${cmd[@]}" --sync "${sync_args[@]}" "${packages_to_sync[@]}"
fi
}
@@ -127,7 +134,8 @@ sync_secret_service() {
sync_proton_vpn() {
# shellcheck disable=SC2034
local proton_vpn_packages=(proton-vpn-gtk-app proton-vpn-cli)
- sync_packages pacman proton_vpn_packages --assume-installed gnome-keyring
+ # --needed because one of the two packages might already be synced
+ sync_packages pacman proton_vpn_packages --needed --assume-installed gnome-keyring
}
case ${1:-} in
@@ -164,7 +172,7 @@ sync)
)
sync_packages pacman deps
# shellcheck disable=SC2034
- declare aur_deps=(pass-secret-service-bin vim-language-server)
+ declare aur_deps=(vim-language-server)
sync_packages yay aur_deps
sync_secret_service
sync_proton_vpn