#!/bin/sh

if test `id -u` -ne 0
then
    echo "$0 must be run as root."
    return
fi

set -e

FRESH=clean_environment
ROOT=test_environment

add_mount() {
    if mountpoint -q "$ROOT$1"
    then
        echo "$ROOT$1 already mounted."
    else
        echo "Mounting $2$1 to $ROOT$1"
        mkdir -p "$ROOT$1"
        mount -o bind "$2$1" "$ROOT$1"
    fi
}

remove_mount() {
    if mountpoint -q "$ROOT$1"
    then
        echo "Unmounting $ROOT$1"
        umount -l "$ROOT$1"
    fi
}

add_mounts() {
    add_mount / "$ROOT"
    add_mount /proc
    add_mount /sys
    add_mount /dev
    add_mount /dev/pts
    add_mount /tmp/.X11-unix
}

remove_mounts() {
    remove_mount /tmp/.X11-unix
    remove_mount /dev/pts
    remove_mount /dev
    remove_mount /sys
    remove_mount /proc
    remove_mount /
}

remove_environment() {
    if test -d "$ROOT"
    then
        # Call this script that automatically unmounts the mount points too.
        remove_mounts
        echo "Removing $ROOT"
        rm -r "$ROOT"
    else
        echo "No environment found at $ROOT. Doing nothing."
    fi
}

remove_everything() {
    if test -d "$ROOT"
    then
        # Call this script that automatically unmounts the mount points too.
        remove_environment
    fi

    if test -d "$FRESH"
    then
        echo "Removing $FRESH"
        rm -r "$FRESH"
    fi

    if test -d debootstrap
    then
        echo "Removing debootstrap"
        rm -r debootstrap
    fi

    if test -f pkglist.x86_64.txt
    then
        echo "Removing pkglist.x86_64.txt"
        rm pkglist.x86_64.txt
    fi

    if test -f archlinux-bootstrap*.tar.zst
    then
        echo "Removing archlinux bootstrap tarballs."
        rm archlinux-bootstrap*.tar.zst
    fi
}

case "$1" in
    everything)  remove_everything ;;
    mounts)      remove_mounts ;;
    add_mounts)  add_mounts ;;
    environment) remove_environment ;;
    "")          remove_environment ;;
esac

