#!/bin/ksh

myself=$0
DESC='Open a new experiemnt (Etagere) with pre-set RCSPATH / SRCPATH for GEM
'
USAGE="USAGE: ${myself##*/} [-h] [-v] [-n]\\ \n
       \t [--all] \\ \n
       \t [--all4d] \\ \n
       \t [--dyn] \\ \n
       \t [--dyn4d] \\ \n
       \t [--phy] \\ \n
       \t [--utils] \\ \n
       \t [--dry-run] \\ \n
       \t VERSION [VERSION2]"

#---- Functions ------------------------------------------------------
#====
usage_long() {
         toto=$(echo -e $USAGE)
         more <<EOF
$DESC

$toto

Options:
    -h, --help : print this help
    -n, --dry-run : only print the ouv_exp cmd, not runnig it
    -v, --verbose : 

    --all      : [default] add all components but v4d to RCS/SRCPATH
    --all4d    : add all components to RCS/SRCPATH
    --dyn      : add gemdyn but v4d to RCS/SRCPATH
    --dyn4d    : add gemdyn including v4d to RCS/SRCPATH
    --phy      : add rpnphy and class to RCS/SRCPATH
    --utils    : add modelutils and tdpack to RCS/SRCPATH

EOF
}

myall=0
my4d=0
mydyn=0
myphy=0
myutils=0
myverbose=0
mydry=0
while [[ $# -gt 0 ]] ; do
    case $1 in
        (-h|--help) usage_long; exit 0;;
        (-n|--dry-run) mydry=1 ;;
        (-v|--verbose) myverbose=1 ;;
        (--all) myall=1 ;;
        (--all4d) myall=1 ; my4d=1 ;;
        (--dyn) mydyn=1 ;;
        (--dyn4d) mydyn=1 ; my4d=1 ;;
        (--phy) myphy=1 ;;
        (--utils) myutils=1 ;;
        (-*|*) echo "ERROR: Unrecognized option $1"
            echo -e $USAGE
            echo "---- ABORT ----"
            exit 1;;
    esac
    shift
done

let mysum=myall+mydyn+my4d+myphy+myutils
if [[ x$mysum == x0 ]] ; then
	 myall=1
fi

if [[ x$myall = x1 ]] ; then
         mydyn=1
         myphy=1
         myutils=1
fi

if [[ x$modelutils == x || ! -d $modelutils/RCS ]] ; then
	 cat <<EOF
ERROR: \$modelutils not defined or \$modelutils/RCS does not exists
       Cannot setup the experiment diretory

       Please make sure you loaded the full GEM development environment
---- ABORT ----
EOF
	 exit 1
fi

add_src_path() {
   _srcbase=$1
   _srclist=""
   for item in $(ls -d ${_srcbase}/* | grep -vi include | grep -vi Makefile | grep -vi __) ; do
      if [[ -d $item ]] ; then
         _srclist="${_srclist} $item"
      fi
   done
   echo ${_srclist} | tr ' ' '\n'
}

RCSPATH="$modelutils/RCS $gemdyn/RCS $rpnphy/RCS"
SRCPATH="$modelutils/src/inlcude $gemdyn/src/inlcude $rpnphy/src/inlcude"

if [[ x$myutils == x1 ]] ; then
	 RCSPATH="$RCSPATH $(ls -d $modelutils/RCS_* | grep -v _MASSVP7_WRAP | grep -v _DRIVER)"
	 SRCPATH="$SRCPATH $(add_src_path $modelutils/src | grep -vi massvp7_wrap | grep -vi driver)"
fi

if [[ x$mydyn == x1 ]] ; then
	if [[ x$my4d == x1 ]] ; then
		 RCSPATH="$RCSPATH $(ls -d $gemdyn/RCS_* | grep -v _MONITOR | grep -v _MAIN)"
	    SRCPATH="$SRCPATH $(add_src_path $gemdyn/src | grep -v monitor)"
	else
		 RCSPATH="$RCSPATH $(ls -d $gemdyn/RCS_* | grep -v _4D | grep -v _MONITOR | grep -v _MAIN)"
	    SRCPATH="$SRCPATH $(add_src_path $gemdyn/src | grep -vi 4d | grep -vi monitor)"
	fi
fi

if [[ x$myphy == x1 ]] ; then
	 RCSPATH="$RCSPATH $(ls -d $rpnphy/RCS_*)"
	 SRCPATH="$SRCPATH $(add_src_path $rpnphy/src | grep -vi class)"
fi

myecho=''
if [[ x$mydry == x1 ]] ; then
	 myecho=echo
else
	 set -x
    cat > .ssmuse_gem <<EOF
. s.ssmuse.dot $ATM_MODEL_BNDL
EOF
fi

$myecho ouv_exp base -RCSPATH $RCSPATH
if [[ x$mydry == x1 ]] ; then
   echo
   cat <<EOF
echo SRCPATH=\"$SRCPATH\" >> .exper_cour
EOF
else
   cat >>.exper_cour <<EOF
SRCPATH="$SRCPATH"
EOF
fi
