#!/bin/sh
# $Id: root.sh,v 1.5 2015/02/27 19:26:09 asau Stab $
set -e

_progname="${0##*/}"
usage="usage: ${0##*/} {create|delete|start|stop} path"

while getopts "" opt; do
   case $opt in
       \?) echo "$usage" 1>&2; exit 1;;
   esac
done
shift $(expr $OPTIND - 1)

if [ $# -lt 2 ]; then echo "$usage" 1>&2; exit 1; fi

create_root () {
: ${1:?usage: "$0" path}
path="$1"
: ${OBJDIR:=/usr/obj}
: ${RELEASEDIR:="${OBJDIR}"/releasedir}
: ${SETSDIR:="${RELEASEDIR}"/"$(uname -m)"/binary/sets}
: ${SETS:="base comp etc text"}
: ${SETS:="base comp etc games man misc text"}
set -e
mkdir -p "$path"
cd "$path"
for s in ${SETS}; do pax -zrpe -f "${SETSDIR}/$s.tgz"; done
(cd dev && sh MAKEDEV std fd ptm random)
}

delete_root () {
: ${1:?usage: "$0" path}
path="$1"
rm -rf "$path"
}

start_root () {
: ${1:?usage: "$0" path}
path="$1"
mount_ptyfs ptyfs "${path}"/dev/pts
}

stop_root () {
: ${1:?usage: "$0" path}
path="$1"
umount "$path"/dev/pts
}

root () {
local cmd path
cmd="$1"
path="$2"
case "$1" in
   create) create_root "$2";;
   delete) delete_root "$2";;
   start) start_root "$2";;
   stop) stop_root "$2";;
esac
}

root ${1:+"$@"}