diff options
Diffstat (limited to 'hosts/sagittarius')
| -rw-r--r-- | hosts/sagittarius/auto-update.nix | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/hosts/sagittarius/auto-update.nix b/hosts/sagittarius/auto-update.nix index fbc7dae..c1c4aae 100644 --- a/hosts/sagittarius/auto-update.nix +++ b/hosts/sagittarius/auto-update.nix @@ -31,45 +31,46 @@ in #!/bin/sh set -eu - SRCREPO="$1" - if [ -z "$SRCREPO" ]; then + SRC_REPO="$1" + if [ -z "$SRC_REPO" ]; then echo "Error: git repository source was not provided." >&2 exit 1 fi - TEMPDIR="$(mktemp --directory)" - git clone --depth 1 "$SRCREPO" "$TEMPDIR" + TEMP_DIR="$(mktemp --directory)" + git clone --depth 1 "$SRC_REPO" "$TEMP_DIR" - pushd "$TEMPDIR" + pushd "$TEMP_DIR" TAGS="$(git tag --sort tag --list 'v*')" - LATESTTAG="$(echo "$TAGS" | tail --lines 1)" + LATEST_TAG="$(echo "$TAGS" | tail --lines 1)" - if [ -z "$LATESTTAG" ]; then + if [ -z "$LATEST_TAG" ]; then echo "Error: no release tags defined." >&2 exit 1 fi - git fetch "$SRCREPO" "$LATESTTAG" + git fetch "$SRC_REPO" "$LATEST_TAG" git checkout FETCH_HEAD CURRENT_REV="$(git rev-parse HEAD)" - mkdir -p /var/lib/auto-update/ + STATE_DIR="/var/lib/auto-update" + [ -d "$STATE_DIR" ] || mkdir -p "$STATE_DIR" - if [ -e /var/lib/auto-update/last-commit ]; then - LAST_REV="$(cat /var/lib/auto-update/last-commit)" + if [ -e "$STATE_DIR/last-commit" ]; then + LAST_REV="$(cat "$STATE_DIR/last-commit")" if [ "$CURRENT_REV" = "$LAST_REV" ]; then echo "System is already up to date. Exiting." >&2 exit 0 fi fi - echo -n "$CURRENT_REV" > /var/lib/auto-update/last-commit + echo -n "$CURRENT_REV" > "$STATE_DIR/last-commit" nixos-rebuild switch --flake .# popd - rm -rf "$TEMPDIR" + rm -rf "$TEMP_DIR" ''; scriptArgs = "${configRepoSource}"; }; |
