#!/bin/bash

_SYSEXITS_H=1
EX_OK=0
EX__BASE=64
EX_USAGE=64
EX_DATAERR=65
EX_NOINPUT=66
EX_NOUSER=67
EX_NOHOST=68
EX_UNAVAILABLE=69
EX_SOFTWARE=70
EX_OSERR=71
EX_OSFILE=72
EX_CANTCREAT=73
EX_IOERR=74
EX_TEMPFAIL=75
EX_PROTOCOL=76
EX_NOPERM=77
EX_CONFIG=78
EX__MAX=78

pname="$(basename "$0")"
root=none

function usage(){
    printf '%s usage\n\n' "$pname"
    printf '\t%s [-h|--help]\n' "$pname"
    printf '\t%s $mountpoint\n' "$pname"
    printf '\n'
}

function parse_arguments(){
    for arg ; do
        case "$arg" in
        -h|--help)
            usage
            exit 0
            ;;
        -*)
            printf "%s error: unknown option: %s\n" "$pname" "$arg" 1>&2
            usage
            exit $EX_USAGE
            ;;
        *)
            if [ "$root" = none ] ; then
                root="$arg"
            else
                printf "%s error:  option: %s\n" "$pname" "$arg" 1>&2
                usage
                exit $EX_USAGE
            fi
            ;;
        esac
    done
}

function mount_them(){
    local root="$1"
    cd "$root" || exit $EX_OSERR
    mount -t proc proc     proc
    mount -t sysfs sys     sys
    mount -o bind /dev     dev
    mount -o bind /dev/pts dev/pts
}

function main(){
    parse_arguments "$@"
    if [ "$root" = none ] ; then
        printf '%s error: missing mount point argument.\n' "$pname" 1>&2
        usage
        exit $EX_USAGE
    else
        mount_them "$root"
    fi
}

main "$@"
exit $EX_OK
ViewGit