#!/bin/sh
#
#= Setup a directory for a experiment
#
# Authors::   Yasuhiro MORIKAWA
# Version::   $Id: setup.sh,v 1.3 2007/07/30 08:13:43 morikawa Exp $
# Tag Name::  $Name: dcpam4-20070730-2 $
# Copyright:: Copyright (C) GFD Dennou Club, 2007. All rights reserved.
# License::   See COPYRIGHT[link:../COPYRIGHT]
#
######################################################################
#
#== Settings

DEFAULT_DIRNAME="test"
DCPAMDIR=${DCPAMDIR:-..}
DEFAULT_EXECDIR=${DCPAMDIR}/src/main
DEFAULT_NMLDIR=${DEFAULT_EXECDIR}
DEFAULT_SRCDIR=${DCPAMDIR}/src
NMLFILE_SUFFIX="nml"
DEFAULT_SAVEF90="Y"
SRCFILE_FIND="*.[fF]9[05]"

INSTALL=${INSTALL:-cp}
INSTALLBIN=${INSTALLBIN:-cp}
INSTALLDIR=${INSTALLDIR:-"mkdir -p"}

# End Settings
######################################################################

set -e

######################################################################
#== Check echo options
case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
  *c*,-n*) ECHO_N= ECHO_C='
' ECHO_T='      ' ;;
  *c*,*  ) ECHO_N=-n ECHO_C= ECHO_T= ;;
  *)       ECHO_N= ECHO_C='\c' ECHO_T= ;;
esac

######################################################################
#== Start
echo ""
echo "****** Setup a directory for a experiment ******"
echo ""

######################################################################
#== Specify directory for a experiment
num=00
dirname_auto=${DEFAULT_DIRNAME}${num}
while [ -e "$dirname_auto" ]; do
    num=`expr $num + 1`
    if [ $num -lt 10 ]; then
	num=0${num}
    fi
    dirname_auto=${DEFAULT_DIRNAME}${num}
done

dirname=''
echo $ECHO_N "  Enter directory name [${dirname_auto}]: $ECHO_C"
read dirname
test -n "$dirname" || dirname=$dirname_auto
#echo $dirname

######################################################################
#== Search executable files
execdir=''
echo "  Directory in which executable files are prepared"
echo $ECHO_N "    [${DEFAULT_EXECDIR}]: $ECHO_C"
read execdir
test -n "$execdir" || execdir=$DEFAULT_EXECDIR
ls "$execdir" > /dev/null
#echo $execdir

execfilelist=''
for execfile in `ls "$execdir"`; do
    test -f "${execdir}/${execfile}" || continue
    test -x "${execdir}/${execfile}" || continue
    execfilelist=${execfilelist}' '${execdir}/${execfile}
done
#echo $execfilelist
if [ -z "$execfilelist" ]; then
    echo ""
    echo "  Error: executable files are not found in \"$execdir\"."
    echo ""
    exit 1
fi

######################################################################
#== Search NAMELIST files
nmldir=''
echo "  Directory in which NAMELIST files are prepared"
echo $ECHO_N "    [${DEFAULT_NMLDIR}]: $ECHO_C"
read nmldir
test -n "$nmldir" || nmldir=$DEFAULT_NMLDIR
ls "$nmldir" > /dev/null
#echo $nmldir
nmlfilelist=''
for nmlfile in `ls "$nmldir"/*."${NMLFILE_SUFFIX}"`; do
    test -f "${nmlfile}" || continue
    nmlfilelist=${nmlfilelist}' '${nmlfile}
done
#echo $nmlfilelist

######################################################################
#== Search source files
savef90=''
while [ -z "$savef90" ]; do
    echo $ECHO_N "  Save F90/95 source code files? [Y/n]: $ECHO_C"
    read savef90
    test -n "$savef90" || savef90=$DEFAULT_SAVEF90
    case $savef90 in
	y*|Y*|n*|N*) ;;
	*)
	    savef90=''
	    echo "  Enter yes or no"
	    ;;
    esac
done

srcfilelist=''
case $savef90 in
    y*|Y*)
	srcdir=''
	echo "  Directory in which source code files are prepared"
	echo $ECHO_N "    [${DEFAULT_SRCDIR}]: $ECHO_C"
	read srcdir
	test -n "$srcdir" || srcdir=$DEFAULT_SRCDIR
	ls "$srcdir" > /dev/null
	#echo $srcdir
	for srcfile in `find "$srcdir" -name "${SRCFILE_FIND}"`; do
	    test -f "${srcfile}" || continue
	    srcfilelist=${srcfilelist}' '`echo ${srcfile} | sed -e "s|${srcdir}/||g"`
	done
	#echo $srcfilelist
	;;
esac

######################################################################
#== Create directory and copy some files
echo "  $INSTALLDIR $dirname"
$INSTALLDIR $dirname

for execfile in $execfilelist ; do
    echo "  ${INSTALLBIN} ${execfile} ${dirname}"
    ${INSTALLBIN} ${execfile} ${dirname}
done
for nmlfile in $nmlfilelist ; do
    echo "  ${INSTALL} ${nmlfile} ${dirname}"
    ${INSTALL} ${nmlfile} ${dirname}
done

dirname_src=$dirname/src
test -z "$srcfilelist" || $INSTALLDIR $dirname_src
for srcfile in $srcfilelist ; do
    echo "  ${INSTALLDIR} $dirname_src/`dirname ${srcfile}`"
    ${INSTALLDIR} $dirname_src/`dirname ${srcfile}`
    echo "  ${INSTALL} ${srcdir}/${srcfile} $dirname_src/`dirname ${srcfile}`/"
    ${INSTALL} ${srcdir}/${srcfile} $dirname_src/`dirname ${srcfile}`/
done

echo ""
echo "*** Setup of \"${dirname}\" is complete ***"
echo ""
exit 0
