irongit
dotzsh/monitor_updates.sh
27 lines916 BBourne Again Shell (bash)
1#!/bin/bash
2
3# Run by cron every 6 hours. Caches update status for shell startup to read.
4
5CACHE_DIR="${XDG_CACHE_HOME:-$HOME/.cache}/dotzsh"
6mkdir -p "$CACHE_DIR"
7
8# Check for system updates
9if command -v paru &>/dev/null; then
10 paru -Qu > "$CACHE_DIR/system_updates" 2>/dev/null
11elif command -v pacman &>/dev/null; then
12 pacman -Qu > "$CACHE_DIR/system_updates" 2>/dev/null
13elif command -v apt &>/dev/null; then
14 apt list --upgradeable 2>/dev/null | tail -n +2 > "$CACHE_DIR/system_updates"
15elif command -v dnf &>/dev/null; then
16 dnf check-update 2>/dev/null > "$CACHE_DIR/system_updates"
17fi
18
19# Check for dotzsh updates
20ZDOTDIR="${ZDOTDIR:-$HOME/.config/zsh}"
21if (cd "$ZDOTDIR" && git fetch origin &>/dev/null); then
22 if (cd "$ZDOTDIR" && [ "$(git rev-parse HEAD)" != "$(git rev-parse '@{u}' 2>/dev/null)" ]); then
23 echo "1" > "$CACHE_DIR/dotzsh_update"
24 else
25 rm -f "$CACHE_DIR/dotzsh_update"
26 fi
27fi