#!/usr/bin/env bash
set -Eeuo pipefail

IMAGE=/usr/share/onix-isolated/rootfs.img
MOUNTPOINT=/run/onix-isolated/rootfs

is_mounted() {
  /usr/bin/findmnt -rn -T "$MOUNTPOINT" -o TARGET 2>/dev/null | /usr/bin/grep -Fxq "$MOUNTPOINT"
}

case "${1:-mount}" in
  mount)
    test -r "$IMAGE"
    /usr/bin/install -d -o root -g root -m 0755 "$MOUNTPOINT"
    if ! is_mounted; then
      /usr/bin/mount -t ext4 -o loop,ro,nodev,nosuid "$IMAGE" "$MOUNTPOINT"
    fi
    ;;
  unmount)
    if is_mounted; then
      /usr/bin/umount "$MOUNTPOINT"
    fi
    ;;
  status)
    if is_mounted; then
      /usr/bin/findmnt -rn -T "$MOUNTPOINT" -o SOURCE,TARGET,FSTYPE,OPTIONS
    else
      echo "rootfs image is not mounted: $MOUNTPOINT" >&2
      exit 3
    fi
    ;;
  *)
    echo "usage: rootfs-mount [mount|unmount|status]" >&2
    exit 2
    ;;
esac
