diff detection of service files

This commit is contained in:
Rowan 2025-03-07 11:10:45 -06:00
parent 8d7f84ac8e
commit a901f34a9e

View file

@ -45,8 +45,9 @@ fi
SYSD_DIR="$XDG_CONFIG_HOME/systemd/user" SYSD_DIR="$XDG_CONFIG_HOME/systemd/user"
SVC_NAME="$SELECTED-automount.service" SVC_NAME="$SELECTED-automount.service"
TMP=$(mktemp)
mkdir -p "$SYSD_DIR" mkdir -p "$SYSD_DIR"
cat << EOF > "$SYSD_DIR/$SVC_NAME" cat << EOF > "$TMP"
[Unit] [Unit]
Description=Mount fuse-overlayfs config Description=Mount fuse-overlayfs config
@ -54,15 +55,29 @@ Description=Mount fuse-overlayfs config
Type=oneshot Type=oneshot
RemainAfterExit=yes RemainAfterExit=yes
ExecStart=fuse-overlayfs -o lowerdir="$BASE_CONFIG:$CHANGESET",upperdir="$UPPER_DIR",workdir="$WORKDIR" "$MOUNT_POINT" ExecStart=fuse-overlayfs -o lowerdir="$BASE_CONFIG:$CHANGESET",upperdir="$UPPER_DIR",workdir="$WORKDIR" "$MOUNT_POINT"
ExecStop=/usr/bin/fusermount -u ~/.$MOUNT_POINT ExecStop=/usr/bin/fusermount -u $MOUNT_POINT
[Install] [Install]
WantedBy=default.target WantedBy=default.target
EOF EOF
diff "$TMP" "$SYSD_DIR/$SVC_NAME" > /dev/null 2>&1
HAS_DIFF=$?
PROMPT=0
if [ "$HAS_DIFF" -gt 0 ]; then
mv "$TMP" "$SYSD_DIR/$SVC_NAME"
PROMPT=1
fi
mkdir -p "$WORKDIR" mkdir -p "$WORKDIR"
fuse-overlayfs -o lowerdir="$BASE_CONFIG:$CHANGESET",upperdir="$UPPER_DIR",workdir="$WORKDIR" "$MOUNT_POINT" fuse-overlayfs -o lowerdir="$BASE_CONFIG:$CHANGESET",upperdir="$UPPER_DIR",workdir="$WORKDIR" "$MOUNT_POINT"
echo "Mounted $MOUNT_POINT with changeset '$SELECTED'" echo "Mounted $MOUNT_POINT with changeset '$SELECTED'"
if [ "$PROMPT" -eq 1 ]; then
echo "Run 'systemctl --user enable --now $SVC_NAME' to automount this config" echo "Run 'systemctl --user enable --now $SVC_NAME' to automount this config"
fi