58 lines
1.4 KiB
Bash
58 lines
1.4 KiB
Bash
#!/usr/bin/env bash
|
|
set -e
|
|
|
|
# Nomarchy Update Available Script
|
|
# Checks if flake updates are available and returns info for Waybar
|
|
|
|
REPO_DIR=""
|
|
if [ -f "/etc/nixos/flake.nix" ]; then
|
|
REPO_DIR="/etc/nixos"
|
|
elif [ -f "/etc/nomarchy/flake.nix" ]; then
|
|
REPO_DIR="/etc/nomarchy"
|
|
fi
|
|
|
|
if [ -z "$REPO_DIR" ]; then
|
|
echo "Nomarchy repo not found."
|
|
exit 0
|
|
fi
|
|
|
|
# Fast-fail if offline to avoid expensive nix commands.
|
|
if ! ping -c 1 -W 2 1.1.1.1 >/dev/null 2>&1; then
|
|
exit 0
|
|
fi
|
|
|
|
# Get the current locked revision for Nomarchy
|
|
LOCKED_REV=$(jq -r '.nodes.nomarchy.locked.rev // empty' "$REPO_DIR/flake.lock" 2>/dev/null)
|
|
|
|
if [ -z "$LOCKED_REV" ]; then
|
|
# Could be named something else or missing, fallback to generic icon
|
|
echo ""
|
|
exit 0
|
|
fi
|
|
|
|
# Check if we are pinned in flake.nix
|
|
if grep -q "rev=" "$REPO_DIR/flake.nix" 2>/dev/null; then
|
|
# We are pinned. An update implies unpinning and upgrading.
|
|
# We can just show the icon to encourage the user to update and unpin.
|
|
echo ""
|
|
exit 0
|
|
fi
|
|
|
|
# Get remote latest revision
|
|
REMOTE_URL="https://git.bemagri.xyz/bernardo/Nomarchy.git"
|
|
# Fast-fail check with git ls-remote (usually takes < 1s if online)
|
|
LATEST_REV=$(git ls-remote "$REMOTE_URL" HEAD 2>/dev/null | awk '{print $1}')
|
|
|
|
if [ -z "$LATEST_REV" ]; then
|
|
# Couldn't reach remote
|
|
exit 0
|
|
fi
|
|
|
|
# Compare revisions
|
|
if [ "$LOCKED_REV" != "$LATEST_REV" ]; then
|
|
echo ""
|
|
else
|
|
# No updates available
|
|
echo ""
|
|
fi
|