#! /bin/bash

#_____________________________________________________________________________
# usage
# call if option -h, -help or --help, display usage and quit
function usage ()
{
    cat <<\MANUAL_EOF
"NO MANUAL YET"
MANUAL_EOF

exit 418
}

function build ()
{
    if [ ! -d "bld" ]; then
        mkdir bld
    fi
    cd bld

    if [ "$1" == "WithNoTest"]
        cmake ..
        make -j ${J} ++++ CLASSpkg_root CLASSpkg CLASSGui
    fi

    if [ "$1" == "WithTest"]
        cmake ..
        make -j ${J}
    fi
}

function clean ()
{
    if [ -d "bld" ]; then
        cd bld
        make clean
        cd ..
        rm -rf bld
    fi
    rm -rf source/src/*Dict.cxx
    rm -rf lib
    rm -rf bin
}


##############################################################################
### calls of all functions
##############################################################################

J="1"
BUILD=false
CLEAN=false
GTEST=false

# loop on all arguments
for arg in "$@"; do
    case $arg in
        -h|-help|--help )
            usage ;;
        --build|-build|build )
            BUILD=true ;;
        --clean|-clean|clean )
            CLEAN=true ;;
        --clean-build )
            CLEAN=true;BUILD=true ;;
        --build-test )
            GTEST=true ;;
        -j* )
            J="${arg//-j=/}" ;;
    esac
done


if [ "${CLEAN}" = true ]; then
    clean
fi

if [ "${BUILD}" = true ]; then
    build(WithNoTest)
fi

if [ "${GTEST}" = true ]; then
    build(WithTest)
fi

exit 0

EOF
##############################################################################

%DOC

# Exit status
In `bash`, a correct exectution of a script return an exit status equals to `0` (that why a *C*/*C++* program end by `return 0;`). There is no standard for other exit status, so I (Josselin Massot) use the list of status code in HTTP for exit status.

* `404` : *Not Found*, a test find a file which doesn't exist.
* `418` : *I'm a teapot*, if only return help (I don't find a correct exit status for this).
* `501` : *Not Implemented*, test a feature which doesn't implemented on OS.
* `505` : *HTTP Version not supported*, the version of a library is not the one is expected.
* `507` : *Insufficient storage*, an error on making a directory, maybe because of the insufficient storage.