dbwebb-inspect

1 lines ASCII Unix (LF)
1
#!/bin/sh

#SCRIPT=$(readlink -f "$0")
#SCRIPTPATH=$(dirname "$SCRIPT")
#. "$SCRIPTPATH/.dbwebb.version"
. "bin/.dbwebb.version"

TESTS=0
ASSERTS=0
FAULTS=0

ECHO="printf"

TMPFILE="/tmp/dbwebb-error-{$USER}-$$"
# Remove old tmp files
find /tmp -maxdepth 1 -name 'dbwebb-error*' -user mosstud -type f -exec rm -f {} \; 

#export SUDO_ASKPASS=askpass
#SUDO="sudo -A -u dbwebb"
SUDO=""



#
# Print usage of script
#
printUsage()
{
    $ECHO "\nUtility dbwebb-inspect $VERSION by Mikael Roos, to inspect course results as a teacher."
    $ECHO "\n"
    $ECHO "\nUsage: dbwebb-inspect [options] <item> <user>"
    $ECHO "\n"
    $ECHO "Options:"
    $ECHO "\n"
    $ECHO "\n  -h         Print this message and exit."
    $ECHO "\n  -v         Print version and exit."
    $ECHO "\n"
    $ECHO "\nItem:"
    $ECHO "\n"
    $ECHO "\n  kmom01    Inspect selected kmom."
    $ECHO "\n  kmom02    Inspect selected kmom."
    $ECHO "\n  kmom03    Inspect selected kmom."
    $ECHO "\n  kmom04    Inspect selected kmom."
    $ECHO "\n  kmom05    Inspect selected kmom."
    $ECHO "\n  kmom06    Inspect selected kmom."
    $ECHO "\n  kmom10    Inspect selected kmom."
    $ECHO "\n"
    $ECHO "\nExample:"
    $ECHO "\n"
    $ECHO "\n  $ dbwebb-inspect kmom01"
    $ECHO "\n  $ dbwebb-inspect kmom01 mosstud"
    $ECHO "\n"
    $ECHO "\n"
}



#
# Check the environment
#
checkEnvironment()
{
    $ECHO "\n-----------------------------------------"
    $ECHO "\n----------- dbwebb inspect --------------"
    $ECHO "\n-----------------------------------------"

    # Check who you are
    if [ "$USER" = "$THEUSER" ]
    then
        $ECHO "\nChecking your own $KMOM, ok."
    else
        $ECHO "\nChecking $KMOM for $THEUSER as `whoami` at `hostname`."
    fi

    dirname="$THEDIR"
    assert 0 "test -r $dirname -a -d $dirname" "Directory $dirname not readable.\nPerhaps login to the studserver and execute the command:\nsudo setpre-dbwebb-kurser.bash $THEUSER"
    
    if [ $? -eq 1 ]; then
        $ECHO "\nFor debug:"
        $ECHO "\n`whoami`\n"
        $ECHO "\n`groups`\n"

        dir="$( dirname $THEDIR )"
        $ECHO "\n`ls -ld $dir`\n"
        $ECHO "\n$dir is directory `test -d $dir; echo $?`\n"
        $ECHO "\n$dir is readable `test -r $dir; echo $?`\n"

        $ECHO "\n`ls -ld $THEDIR`\n"
        $ECHO "\n$THEDIR is directory `test -d $THEDIR; echo $?`\n"
        $ECHO "\n$THEDIR is readable `test -r $THEDIR; echo $?`\n"
    fi 

    $ECHO "\nOpen files in an editor:"
    $ECHO "\n$EDITOR $dirname"
}



#
# Test python me
#
pythonme()
{
    $ECHO "\n\n-----------------------------------------"
    $ECHO "\n----------- me-page ---------------------"
    $ECHO "\n-----------------------------------------"

    filename="$THEDIR/me/me.cgi"
    assert 0 "test -r $filename -a -f $filename" "CGI-script for me-page is not readable. $filename"

    url="$SERVERURL/~$THEUSER/$BASEDIR/$PROJECT"
    $ECHO "\nLink to me-page: $url/me/me.cgi"

    filename="$THEDIR/me/redovisning.cgi"
    assert 0 "test -r $filename -a -f $filename" "CGI-script for redovisning-page is not readable. $filename"

    url="$SERVERURL/~$THEUSER/$BASEDIR/$PROJECT"
    $ECHO "\nLink to redovisning-page: $url/me/redovisning.cgi"

    $ECHO "\nOpen files in an editor:"
    $ECHO "\n$EDITOR $THEDIR/me"
    $ECHO "\n$EDITOR $THEDIR/me/me.cgi"

    $ECHO "\nPress enter to continue..."
    read void
}



#
# Publish kmom to webserver
#
publishKmom()
{
    target="$1"

    $ECHO "\nPublish $THEKMOM [yN]? "

    read answer
    default="n"
    answer=${answer:-$default}

    if [ "$answer" = "y" -o "$answer" = "Y" ]
    then
        rsync -a --delete "$THEDIR/$target/" "$PUBLISH_STUD/"
        
        for filename in $(find "$PUBLISH_STUD" -type f -name '*.cgi'); do
            chmod 755 "$filename"
        done

        url="$SERVERURL/~$USER/$BASEDIR/$STUD_DIR"
        $ECHO "\nLink: $url"

        $ECHO "\nOpen files in an editor:"
        $ECHO "\n$EDITOR $PUBLISH_STUD/"

        $ECHO "\nMove to the directory:"
        $ECHO "\ncd $PUBLISH_STUD/"
    fi
}



#
# Test check the kmom dir exists
#
checkKmomDir()
{
    dirname="$THEDIR/$1"
    assert 0 "test -r $dirname -a -d $dirname" "Directory $dirname not readable."
}



#
# Execute a command, maybe as another user
#
executeCommand()
{
    what="$1"
    move1="$2"
    cmd="$3"
    move2="$4"

    filename="$move1/$what"

    if [ -f "$filename" -o -r "$filename" ]; then
        $ECHO "\nExecute the program $what [Yn]? "
        read answer
        default="y"
        answer=${answer:-$default}

        if [ "$answer" = "y" -o "$answer" = "Y" ]; then

            cd "$move1"

            if [ "$USER" = "$THEUSER" ]; then
                $cmd
            else
                $SUDO $cmd
            fi
            
            status=$?
            cd "$move2"

            if [ $status -eq 0 ]; then
                assert 1 "test" "Command executed successfully."
                $ECHO "\n\n$MSG_OK Command executed with a exit status 0  - indicating success."
            else
                assert 0 "test" "Command return non-zero exit status which might indicate failure."
            fi
        fi
    else
        assert 0 "test" "The file $what is missing or not readable."
    fi
}




#
# Test validate a kmom
#
validateKmom()
{
    THEKMOM="$1"

    $ECHO "\nValidate $THEKMOM [Yn]? "

    read answer
    default="y"
    answer=${answer:-$default}

    if [ "$answer" = "y" -o "$answer" = "Y" ]
    then
        bin/dbwebb-validate -i -n -m -e -t $THEKMOM $THEUSER
    fi
}



#
# Test python plane
#
pythonplane()
{
    $ECHO "\n\n-----------------------------------------"
    $ECHO "\n----------- plane        ----------------"
    $ECHO "\n-----------------------------------------"

    target="$1"

    dirname="$THEDIR/$target"
    assert 0 "test -r $dirname -a -d $dirname" "Directory $dirname not readable."

    filename="$THEDIR/$target/plane1.py"
    assert 0 "test -r $filename -a -f $filename" "The file plane.py is missing."

    filename="$THEDIR/$target/plane1.cgi"
    assert 0 "test -r $filename -a -f $filename" "The file plane.cgi is missing."

    url="$SERVERURL/~$THEUSER/$BASEDIR/$PROJECT"
    $ECHO "\nLink to plane-page: $url/me/kmom01/plane/plane1.cgi"

    $ECHO "\nOpen files in an editor:"
    $ECHO "\n$EDITOR $THEDIR/$target/"
    $ECHO "\n$EDITOR $THEDIR/$target/plane1.cgi"

    executeCommand "plane.py" "$THEDIR/$target" "python3 plane.py" "$TARGET"
}



#
# Test python marvin1
#
pythonmarvin1()
{
    id="$1"
    target="$2"

    $ECHO "\n\n-----------------------------------------"
    $ECHO "\n----------- marvin$id ---------------------"
    $ECHO "\n-----------------------------------------"

    dirname="$THEDIR/$target"
    assert 0 "test -r $dirname -a -d $dirname" "Directory $dirname not readable."

    filename="$THEDIR/$target/marvin.py"
    assert 0 "test -r $filename -a -f $filename" "The file marvin.py is missing."

    $ECHO "\nOpen files in an editor:"
    $ECHO "\n$EDITOR $THEDIR/$target/"
    $ECHO "\n$EDITOR $THEDIR/$target/marvin.py"

    executeCommand "marvin.py" "$THEDIR/$target" "python3 marvin.py" "$TARGET"
}



#
# Test python marvin2
#
pythonmarvin2()
{
    id="$1"
    target="$2"

    $ECHO "\n\n-----------------------------------------"
    $ECHO "\n----------- marvin$id ---------------------"
    $ECHO "\n-----------------------------------------"

    dirname="$THEDIR/$target"
    assert 0 "test -r $dirname -a -d $dirname" "Directory $dirname not readable."

    filename="$THEDIR/$target/marvin.py"
    assert 0 "test -r $filename -a -f $filename" "The file marvin.py is missing."

    filename="$THEDIR/$target/main.py"
    assert 0 "test -r $filename -a -f $filename" "The file main.py is missing."

    $ECHO "\nOpen files in an editor:"
    $ECHO "\n$EDITOR $THEDIR/$target/"
    $ECHO "\n$EDITOR $THEDIR/$target/marvin.py"

    executeCommand "main.py" "$THEDIR/$target" "python3 main.py" "$TARGET"
}



#
# Test python game1
#
pythongame1()
{
    $ECHO "\n\n-----------------------------------------"
    $ECHO "\n----------- game1       ----------------"
    $ECHO "\n-----------------------------------------"

    target="$1"

    dirname="$THEDIR/$target"
    assert 0 "test -r $dirname -a -d $dirname" "Directory $dirname not readable."

    filename="$THEDIR/$target/border.py"
    assert 0 "test -r $filename -a -f $filename" "The file border.py is missing."

    $ECHO "\nOpen files in an editor:"
    $ECHO "\n$EDITOR $THEDIR/$target/"
    $ECHO "\n$EDITOR $THEDIR/$target/border.py"

    executeCommand "border.py" "$THEDIR/$target" "python3 border.py" "$TARGET"
}



#
# Test python game2
#
pythongame2()
{
    $ECHO "\n\n-----------------------------------------"
    $ECHO "\n----------- game2       ----------------"
    $ECHO "\n-----------------------------------------"

    target="$1"

    dirname="$THEDIR/$target"
    assert 0 "test -r $dirname -a -d $dirname" "Directory $dirname not readable."

    filename="$THEDIR/$target/retro.py"
    assert 0 "test -r $filename -a -f $filename" "The file retro.py is missing."

    filename="$THEDIR/$target/retro.py"
    assert 0 "test -r $filename -a -f $filename" "The file retro.py is missing."

    $ECHO "\nOpen files in an editor:"
    $ECHO "\n$EDITOR $THEDIR/$target/"
    $ECHO "\n$EDITOR $THEDIR/$target/retro.py"

    executeCommand "retro.py" "$THEDIR/$target" "python3 retro.py" "$TARGET"
}



#
# Test python lab
#
pythonlab()
{
    id="$1"
    target="$2"

    $ECHO "\n\n-----------------------------------------"
    $ECHO "\n----------- lab$id ------------------------"
    $ECHO "\n-----------------------------------------"


    dirname="$THEDIR/$target"
    assert 0 "test -r $dirname -a -d $dirname" "Directory $dirname not readable."

    filename="$THEDIR/$target/answer.py"
    assert 0 "test -r $filename -a -f $filename" "The file answer.py is missing."

    $ECHO "\nOpen files in an editor:"
    $ECHO "\n$EDITOR $THEDIR/$target/"
    $ECHO "\n$EDITOR $THEDIR/$target/answer.py"

    executeCommand "answer.py" "$THEDIR/$target" "python3 answer.py" "$TARGET"
}



#
# Test python kmom01
#
pythonkmom01()
{
    $ECHO "\n\n-----------------------------------------"
    $ECHO "\n----------- python kmom01 ---------------"
    $ECHO "\n-----------------------------------------"

    THEKMOM="kmom01"
    THETARGET="me/$THEKMOM"

    checkKmomDir "$THETARGET"
    publishKmom "$THETARGET"
    validateKmom "$THEKMOM"
    pythonme
    pythonplane "$THETARGET/plane"
}



#
# Test python kmom02
#
pythonkmom02()
{
    $ECHO "\n\n-----------------------------------------"
    $ECHO "\n----------- python kmom02 ---------------"
    $ECHO "\n-----------------------------------------"

    THEKMOM="kmom02"
    THETARGET="me/$THEKMOM"

    checkKmomDir "$THETARGET"
    publishKmom "$THETARGET"
    validateKmom "$THEKMOM"
    pythonme
    pythonlab "1" "$THETARGET/lab1"
    pythonmarvin1 "1" "$THETARGET/marvin1"
}



#
# Test python kmom03
#
pythonkmom03()
{
    $ECHO "\n\n-----------------------------------------"
    $ECHO "\n----------- python kmom03 ---------------"
    $ECHO "\n-----------------------------------------"

    THEKMOM="kmom03"
    THETARGET="me/$THEKMOM"

    checkKmomDir "$THETARGET"
    publishKmom "$THETARGET"
    validateKmom "$THEKMOM"
    pythonme
    pythonlab "2" "$THETARGET/lab2"
    pythonmarvin2 "2" "$THETARGET/marvin2"
}



#
# Test python kmom04
#
pythonkmom04()
{
    $ECHO "\n\n-----------------------------------------"
    $ECHO "\n----------- python kmom04 ---------------"
    $ECHO "\n-----------------------------------------"

    THEKMOM="kmom04"
    THETARGET="me/$THEKMOM"

    checkKmomDir "$THETARGET"
    publishKmom "$THETARGET"
    validateKmom "$THEKMOM"
    pythonme
    pythonlab "3" "$THETARGET/lab3"
    pythonmarvin2 "3" "$THETARGET/marvin3"
    pythongame1 "$THETARGET/game1"
}



#
# Test python kmom05
#
pythonkmom05()
{
    $ECHO "\n\n-----------------------------------------"
    $ECHO "\n----------- python kmom05 ---------------"
    $ECHO "\n-----------------------------------------"

    THEKMOM="kmom05"
    THETARGET="me/$THEKMOM"

    checkKmomDir "$THETARGET"
    publishKmom "$THETARGET"
    validateKmom "$THEKMOM"
    pythonme
    pythonlab "4" "$THETARGET/lab4"
    pythongame2 "$THETARGET/game2"
    pythonmarvin2 "4" "$THETARGET/marvin4"
}



#
# Test javascript1 me
#
javascript1me()
{
    $ECHO "\n\n-----------------------------------------"
    $ECHO "\n----------- me-page ---------------------"
    $ECHO "\n-----------------------------------------"

    filename="$THEDIR/me/me.html"
    assert 0 "test -r $filename -a -f $filename" "Me file is not readable. $filename"

    url="$SERVERURL/~$THEUSER/$BASEDIR/$PROJECT"
    $ECHO "\nLink to me-page: $url/me/me.html"

    filename="$THEDIR/me/redovisning.html"
    assert 0 "test -r $filename -a -f $filename" "Redovisning file is not readable. $filename"

    url="$SERVERURL/~$THEUSER/$BASEDIR/$PROJECT"
    $ECHO "\nLink to redovisning-page: $url/me/redovisning.html"

    $ECHO "\nPress enter to continue..."
    read void
}



#
# Test javascript1 sandbox
#
javascript1sandbox()
{
    label=${2:-"sandbox"}

    $ECHO "\n\n-----------------------------------------"
    $ECHO "\n----------- $label -------------------"
    $ECHO "\n-----------------------------------------"

    target="$1"

    dirname="$THEDIR/$target"
    assert 0 "test -r $dirname -a -d $dirname" "Directory $dirname not readable."

    filename="$THEDIR/$target/index.html"
    assert 0 "test -r $filename -a -f $filename" "Index file is not readable. $filename"

    url="$SERVERURL/~$THEUSER/$BASEDIR/$PROJECT/$target"
    $ECHO "\nLink to lab-page: $url"

    $ECHO "\nOpen files in an editor:"
    $ECHO "\n$EDITOR $THEDIR/$target/"
    $ECHO "\n$EDITOR $THEDIR/$target/js/main.js"

    $ECHO "\nPress enter to continue..."
    read void
}



#
# Test javascript1 flag
#
javascript1flag()
{
    label=${2:-"flag"}

    $ECHO "\n\n-----------------------------------------"
    $ECHO "\n----------- $label ------------"
    $ECHO "\n-----------------------------------------"

    target="$1"

    dirname="$THEDIR/$target"
    assert 0 "test -r $dirname -a -d $dirname" "Directory $dirname not readable."

    filename="$THEDIR/$target/index.html"
    assert 0 "test -r $filename -a -f $filename" "Index file is not readable. $filename"

    url="$SERVERURL/~$THEUSER/$BASEDIR/$PROJECT/$target"
    $ECHO "\nLink to lab-page: $url"

    $ECHO "\nOpen files in an editor:"
    $ECHO "\n$EDITOR $THEDIR/$target/"
    $ECHO "\n$EDITOR $THEDIR/$target/js/main.js"

    $ECHO "\nPress enter to continue..."
    read void
}



#
# Test javascript1 baddie
#
javascript1baddie()
{
    $ECHO "\n\n-----------------------------------------"
    $ECHO "\n----------- baddie ---------------------"
    $ECHO "\n-----------------------------------------"

    target="$1"

    dirname="$THEDIR/$target"
    assert 0 "test -r $dirname -a -d $dirname" "Directory $dirname not readable."

    filename="$THEDIR/$target/index.html"
    assert 0 "test -r $filename -a -f $filename" "Index file is not readable. $filename"

    url="$SERVERURL/~$THEUSER/$BASEDIR/$PROJECT/$target"
    $ECHO "\nLink to lab-page: $url"

    $ECHO "\nOpen files in an editor:"
    $ECHO "\n$EDITOR $THEDIR/$target/"
    $ECHO "\n$EDITOR $THEDIR/$target/js/main.js"

    $ECHO "\nPress enter to continue..."
    read void
}



#
# Test javascript1 lab
#
javascript1lab()
{
    $ECHO "\n\n-----------------------------------------"
    $ECHO "\n----------- lab         ----------------"
    $ECHO "\n-----------------------------------------"

    target="$1"

    dirname="$THEDIR/$target"
    assert 0 "test -r $dirname -a -d $dirname" "Directory $dirname not readable."

    filename="$THEDIR/$target/answer.html"
    assert 0 "test -r $filename -a -f $filename" "Answer file is not readable. $filename"

    url="$SERVERURL/~$THEUSER/$BASEDIR/$PROJECT/$target"
    $ECHO "\nLink to lab-page: $url/answer.html"

    $ECHO "\nOpen files in an editor:"
    $ECHO "\n$EDITOR $THEDIR/$target/"
    $ECHO "\n$EDITOR $THEDIR/$target/answer.js"

    $ECHO "\nPress enter to continue..."
    read void
}



#
# Test javascript1 kmom01
#
javascript1kmom01()
{
    $ECHO "\n\n-----------------------------------------"
    $ECHO "\n----------- javascript1 kmom01 ------------"
    $ECHO "\n-----------------------------------------"

    THEKMOM="kmom01"
    THETARGET="me/$THEKMOM"

    checkKmomDir "$THETARGET"
    validateKmom "$THEKMOM"
    javascript1me
    javascript1sandbox "$THETARGET/sandbox"
}



#
# Test javascript1 kmom02
#
javascript1kmom02()
{
    $ECHO "\n\n-----------------------------------------"
    $ECHO "\n----------- javascript1 kmom02 ------------"
    $ECHO "\n-----------------------------------------"

    THEKMOM="kmom02"
    THETARGET="me/$THEKMOM"

    checkKmomDir "$THETARGET"
    publishKmom "$THETARGET"
    validateKmom "$THEKMOM"
    javascript1me
    javascript1lab "$THETARGET/lab1"
    javascript1flag "$THETARGET/flag1"
    javascript1baddie "$THETARGET/baddie1"
}



#
# Test javascript1 kmom03
#
javascript1kmom03()
{
    $ECHO "\n\n-----------------------------------------"
    $ECHO "\n----------- javascript1 kmom03 ------------"
    $ECHO "\n-----------------------------------------"

    THEKMOM="kmom03"
    THETARGET="me/$THEKMOM"

    checkKmomDir "$THETARGET"
    publishKmom "$THETARGET"
    validateKmom "$THEKMOM"
    javascript1me
    javascript1lab "$THETARGET/lab2"
    javascript1flag "$THETARGET/flag2"
    javascript1baddie "$THETARGET/baddie2"
}



#
# Test javascript1 kmom04
#
javascript1kmom04()
{
    $ECHO "\n\n-----------------------------------------"
    $ECHO "\n----------- javascript1 kmom04 ------------"
    $ECHO "\n-----------------------------------------"

    THEKMOM="kmom04"
    THETARGET="me/$THEKMOM"

    checkKmomDir "$THETARGET"
    publishKmom "$THETARGET"
    validateKmom "$THEKMOM"
    javascript1me
    javascript1lab "$THETARGET/lab3"
    javascript1lab "$THETARGET/lab4"
    javascript1flag "$THETARGET/flag3"
    javascript1baddie "$THETARGET/baddie3"
}



#
# Test javascript1 kmom04
#
javascript1kmom05()
{
    $ECHO "\n\n-----------------------------------------"
    $ECHO "\n----------- javascript1 kmom05 ------------"
    $ECHO "\n-----------------------------------------"

    THEKMOM="kmom05"
    THETARGET="me/$THEKMOM"

    checkKmomDir "$THETARGET"
    publishKmom "$THETARGET"
    validateKmom "$THEKMOM"
    javascript1me
    javascript1sandbox "$THETARGET/lab5" "lab5"
    javascript1flag "$THETARGET/flag4" "flag4"
}



#        javascript1) 
#            FILES="me.html redovisning.html" 
#            KMOM01="kmom01 kmom01/sandbox"
#            KMOM02="kmom02 kmom02/flag1 kmom02/lab1 kmom02/baddie1"
#            KMOM03="kmom03 kmom03/flag2 kmom03/lab2 kmom03/baddie2"
#            KMOM04="kmom04 kmom04/flag3 kmom04/lab3 kmom04/lab4 kmom04/baddie3"
#            KMOM05="kmom05 kmom05/flag4 kmom05/lab5 kmom05/baddie4"
#            KMOM06="kmom06 kmom06/flag5 kmom06/baddie5"
#            KMOM10="kmom10"            
#
#        python)      
#            FILES="me.cgi me.py redovisning.cgi redovisning.py" 
#            KMOM01="kmom01 kmom01/hello kmom01/plane"
#            KMOM02="kmom02 kmom02/marvin1 kmom02/lab1"
#            KMOM03="kmom03 kmom03/marvin2 kmom03/lab2"
#            KMOM04="kmom04 kmom04/marvin3 kmom04/lab3 kmom04/game1"
#            KMOM05="kmom05 kmom05/marvin4 kmom05/lab4 kmom05/game2"
#            KMOM06="kmom06 kmom06/marvin5 kmom06/lab5 kmom06/game3"
#            KMOM10="kmom10"



#
# Perform an assert
#
assert()
{
    EXPECTED=$1
    TEST=$2
    MESSAGE=$3
    ASSERTS=$(( $ASSERTS + 1 ))
    FAILED=0

    sh -c "$TEST" > "$TMPFILE" 2>&1
    STATUS=$?
    ERROR=$(cat $TMPFILE)

    if [ \( ! $STATUS -eq $EXPECTED \) -o \( ! -z "$ERROR" \) ]; then
        FAULTS=$(( $FAULTS + 1 ))

        MSG="\n\n$MSG_FAILED $MESSAGE\n"

        $ECHO "$MSG" 
        [ -z "$ERROR" ] || $ECHO "$ERROR\n\n"

        FAILED=1
    fi

    return $FAILED
}




#
# Main
#
if [ $# != 3 ]
then
    :
    #$ECHO
    #printUsage
fi

# Get settings from config-file
. "./.dbwebb.config"


# Get options
while getopts ":hinrv" opt
do
    case $opt in
        (h) 
            printUsage
            exit 0
            ;;

        (v) 
            $ECHO "$VERSION\n"
            exit 0
            ;;

        \?)
            $ECHO "\nInvalid option: -$OPTARG" >&2
            $ECHO "\n"
            $ECHO "\nUse the following to get help."
            $ECHO "\ndbwebb-validate -h"
            $ECHO "\n"
            $ECHO "\n"
            exit 1
            ;;
    esac
done
shift $((OPTIND - 1))


# Get path to dir to check
FAULTS=0
KMOM=$1
THEUSER=${2:=$USER}
THEDIR=`eval echo "~$THEUSER/$BASEDIR/$PROJECT"`

checkEnvironment


# Execute command
case "$KMOM" in
    kmom01)     "${COURSE}${KMOM}" ;;
    kmom02)     "${COURSE}${KMOM}" ;;
    kmom03)     "${COURSE}${KMOM}" ;;
    kmom04)     "${COURSE}${KMOM}" ;;
    kmom05)     "${COURSE}${KMOM}" ;;
    kmom06)     "${COURSE}${KMOM}" ;;
    kmom10)     "${COURSE}${KMOM}" ;;
    *)          
        $ECHO "\n$MSG_FAILED Invalid kmom: $KMOM"
        printUsage
        exit 1 
        ;;
esac



# Clean up and output results
if [ $FAULTS -gt 0 ]
then
        $ECHO "\n\n$MSG_FAILED"
        STATUS=1

        $ECHO " Tests: $TESTS Asserts: $ASSERTS Faults: $FAULTS\n"
        exit $STATUS
fi

$ECHO "\n\n$MSG_OK"
$ECHO " Tests: $TESTS Asserts: $ASSERTS Faults: $FAULTS\n"
exit 0