summaryrefslogtreecommitdiff
path: root/ar/.local/bin/cron/checkup
blob: 99dafdf0132929e65d8b8fa86a4b528c3013f80b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!/bin/sh

# Syncs repositories and downloads updates, meant to be run as a cronjob.
# /usr/share/libalpm/hooks/statusbar.hook

# Take an exclusive lock so two checkups never run at once, and so a manual
# update can yield this run. Interactive update commands can guard themselves
# with the same lock, e.g.:
#   flock -n /tmp/checkup.lock sudo pacman -Syu
LOCKFILE="/tmp/checkup.lock"
exec 9>"$LOCKFILE" || exit 1
if ! flock -n 9; then
  notify-send "📦 Repository Sync" "Another checkup is already running. Skipping."
  exit 0
fi

# Courtesy check: if pacman's database is already locked (e.g. you're running a
# manual update), back off quietly instead of failing on a lock error.
if [ -e /var/lib/pacman/db.lck ]; then
  notify-send "📦 Repository Sync" "pacman is busy (db locked). Skipping this sync."
  exit 0
fi

notify-send "📦 Repository Sync" "Checking for package updates..."

sudo pacman -Syyuw --noconfirm || notify-send "⛔ Error downloading updates.
Check your internet connection, if pacman is already running, or run update manually to see errors."

pkill -RTMIN+11 "${STATUSBAR:-dwmblocks}"

if pacman -Qu | grep -v "\[ignored\]"; then
  notify-send "🎁 Repository Sync" "Updates available. Click statusbar icon (📦) or run sb-popupgrade in terminal for update."
else
  notify-send "📦 Repository Sync" "Sync complete. No new packages for update."
fi