82 lines
1.7 KiB
Bash
Executable file
82 lines
1.7 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
HOST="${1:-ops-jrz1}"
|
|
|
|
repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
cd "$repo_root"
|
|
|
|
echo "== Local working tree =="
|
|
git status -sb
|
|
|
|
echo
|
|
|
|
echo "== Commits ahead of origin/main =="
|
|
if git rev-parse --verify origin/main >/dev/null 2>&1; then
|
|
git log --oneline origin/main..HEAD || true
|
|
else
|
|
echo "origin/main not found (run: git fetch origin)"
|
|
fi
|
|
|
|
echo
|
|
|
|
echo "== Local HEAD =="
|
|
local_head="$(git rev-parse HEAD)"
|
|
echo "$local_head"
|
|
|
|
echo
|
|
|
|
echo "== Remote configuration revision ($HOST) =="
|
|
remote_rev="$(ssh "root@${HOST}" 'nixos-version --configuration-revision' || true)"
|
|
if [[ -z "$remote_rev" || "$remote_rev" == "" ]]; then
|
|
echo "(empty)"
|
|
else
|
|
echo "$remote_rev"
|
|
fi
|
|
|
|
echo
|
|
|
|
echo "== Comparison =="
|
|
if [[ -n "$remote_rev" && "$remote_rev" == "$local_head" ]]; then
|
|
echo "OK: remote matches local HEAD"
|
|
else
|
|
echo "NOTE: remote does not match local HEAD"
|
|
echo "Remote: ${remote_rev:-<empty>}"
|
|
echo "Local: $local_head"
|
|
fi
|
|
|
|
echo
|
|
|
|
echo "== Remote current system =="
|
|
ssh "root@${HOST}" 'readlink /run/current-system'
|
|
|
|
echo
|
|
|
|
echo "== Musiclink local repo HEAD =="
|
|
musiclink_repo="/home/dan/proj/musiclink"
|
|
if [[ -d "$musiclink_repo/.git" ]]; then
|
|
git -C "$musiclink_repo" rev-parse HEAD
|
|
else
|
|
echo "(missing $musiclink_repo)"
|
|
fi
|
|
|
|
echo
|
|
|
|
echo "== Musiclink flake.lock rev =="
|
|
python3 - <<'PY'
|
|
import json
|
|
from pathlib import Path
|
|
lock_path = Path("flake.lock")
|
|
try:
|
|
data = json.loads(lock_path.read_text())
|
|
rev = data["nodes"]["musiclink"]["locked"].get("rev")
|
|
print(rev or "(missing rev)")
|
|
except Exception as exc:
|
|
print(f"(error reading flake.lock: {exc})")
|
|
PY
|
|
|
|
echo
|
|
|
|
echo "== Musiclink running ExecStart =="
|
|
ssh "root@${HOST}" 'systemctl show -p ExecStart musiclink --value'
|