#!/bin/bash

######################################################################
#
# Copyright (c) 2003 by Klaus Strack, D-Neidlingen
#
# Author:	Klaus Strack ($Author$)
# Header:	$Header$
# Source:	$Source$
#
# Program:	setup	fuer Hexagon Demo-Software (Linux)
		VERSION="1.00a"
USE="
	installiert vorhandene ZIP-Dateien, bzw. bereits entpackte
	ZIP-Archive. Bearbeitete ZIP-Archive werden in das Verzeichnis
	.DONE verschoben.
"
#
# $Log$
######################################################################

#PATH=~/usr/bin:/etc:/usr/sbin:/usr/bin:/usr/ccs/bin:/usr/contrib/bin:/opt/nettladm/bin:/usr/bin/X11:/usr/contrib/bin/X11:/opt/perf/bin:/opt/omni/bin:/sbin:/home/root

#. $homedir/.shsrc
#. $KOPPL/.dbrc

homedir="."

I=`basename $0`

case `echo -n x` in
 x)	N='-n'	C=''	;;
 *)	N=''	C='\c'	;;
esac

readonly I VERSION N C

E_dat='ZEIT=`date "+%d.%m.%Y %H:%M:%S"`'
E_log='eval $E_dat ; case $optlog in 1) echo "$ZEIT: $log" >> $LOG ;; esac ;
	case $optverbose in 1) echo "$ZEIT: $log" ;; esac'
E_log1='eval $E_dat ;
	case $optlog in 1) echo $N "$ZEIT: $log$C" >> $LOG ;; esac ;
	case $optverbose in 1) echo $N "$ZEIT: $log$C" ;; esac'
E_logz='case $optlog in 1) echo $N "$log$C" >> $LOG ;; esac ;
	case $optverbose in 1) echo $N "$log$C" ;; esac'
E_log2='case $optlog in 1) echo "$log" >> $LOG ;; esac ;
	case $optverbose in 1) echo "$log" ;; esac'


#echo ""
#echo "$I Version $VERSION (C) 2003 Klaus Strack"

DEBUG=0		# DEBUG
optversion=0	# Version
optverbose=0	# Verbose
optlog=1	# Logfile schreiben
LOGDIR="$homedir/LOG"
PIDDIR="$homedir/run"
SAVDIR="$homedir/.DONE"
TRAINDIR="$homedir/train"

LIBS=
LIBS="$LIBS libborqt-6.9-qt2.3.so"

PROGS=
PROGS="$PROGS wtolpass"
PROGS="$PROGS wfed1"
PROGS="$PROGS wzar1"

ZIPS=
ZIPS="$ZIPS libborqt.zip"
ZIPS="$ZIPS fed1_dx.zip"
ZIPS="$ZIPS tolp_ex.zip"
ZIPS="$ZIPS zar1_dx.zip"

q="\'"

USAGE="
usage: $I [options] 
$USE

 -B x	Libraries x			[$LIBS]
 -P x	Programs x			[$PROGS]
 -Z x	ZIP-Archives x			[$ZIPS]
 -T x	TRAIN-Directory x		[$TRAINDIR]
 -S x	SAVE-Directory x		[$SAVDIR]
 -L x	Logging Directory x		[$LOGDIR]
 -P x	Directory with PID-Files = x	[$PIDDIR]

 -V	Verbose
 -v	Version
 -l	write no logs
 -+ x	set Debugmode to x		[$DEBUG]
"

tmpfn="$TMPDIR/$I.$$" ; export tmpfn
infn=

#
#	scan for options
#

while : ; do
    case $1 in
     --) shift ; break ;;	## stop option-parsing 
     -*) a="$1" ; shift
     	 case $a in
	  -v)	optversion=1 ;;
	  -V)	optverbose=1 ;;
	  -l)	optlog=0 ;;
	  -B)	case $# in 0) echo "$USAGE" ; exit 1 ;;
		 *) LIBS="$1" ; shift ;;
		esac ;;
	  -P)	case $# in 0) echo "$USAGE" ; exit 1 ;;
		 *) PROGS="$1" ; shift ;;
		esac ;;
	  -Z)	case $# in 0) echo "$USAGE" ; exit 1 ;;
		 *) ZIPS="$1" ; shift ;;
		esac ;;
	  -S)	case $# in 0) echo "$USAGE" ; exit 1 ;;
		 *) SAVDIR="$1" ; shift ;;
		esac ;;
	  -L)	case $# in 0) echo "$USAGE" ; exit 1 ;;
		 *) LOGDIR="$1" ; shift ;;
		esac ;;
	  -P)	case $# in 0) echo "$USAGE" ; exit 1 ;;
		 *) PIDDIR="$1" ; shift ;;
		esac ;;
	  -+)	case $# in 0) echo "$USAGE" ; exit 1 ;;
		 *) DEBUG="$1" ; shift ;;
		esac ;;
	  -\?)	echo "$USAGE" ; exit 0 ;;
	  *)	echo >&2 "$I: Unknown option '$a'"
		echo "$USAGE" ; exit 1 ;;
	 esac
	 ;;
     *)	break ;;
    esac
done

case $optversion in 0) ;; *)
    echo "$I V$VERSION"
    echo "(c) IQ-Ware"
    exit 0
esac


case $# in 0) ;;
    *) echo "$USAGE" ; exit 1 ;;
esac


TMPDIR=$homedir/tmp 

HEUTE=`date +%d.%m.%y`	; export HEUTE
tstamp=`date +%Y%m%d%H%M%S`
TSIN=`date "+%d.%m.%Y %H:%M:%S"`
dat=`date +%Y%m%d`

LOG="$LOGDIR/$I.log"
OUT="$TMPDIR/$I.out"
PID="$PIDDIR/$I.pid"

TMPFN="$TMPDIR/$I.tmp"
#TMPFN="ttttt.out"

function feierabend() {
    /bin/rm -f $PID $TMPFN;
    log="$I: End of Hexagon Setup"; eval $E_log
    exit 0
}
trap "feierabend" 0 1 2 3 15


#
#	Verzeichnisse anlegen
#
for dir in $LOGDIR $TRAINDIR $SAVDIR / ; do
    case $dir in /) continue ;; esac
    if [ ! -d $dir ] ; then
	mkdir -p $dir
	chmod 755 $dir
	log="$I: Directory $dir created"; eval $E_log
    fi
done

log="$I: Start Hexagon Setup"; eval $E_log

#
#	ZIP-Archive entpacken
#
for zip in $ZIPS / ; do
    case $zip in /) continue ;; esac
    if [ -r $zip ] ; then
	unzip $zip
	mv $zip $SAVDIR
	log="$I: ZIP-Archive $zip unpacked and moved to $SAVDIR"; eval $E_log
    fi
done

#
#	Bibliotheken ueberpruefen
#
for lib in $LIBS / ; do
    case $lib in /) continue ;; esac
    if [ ! -f $lib ] ; then
	echo "
	    For running the demos, you need the library ${lib}.
	    It is missing, but can be downloaded under www.hexagon.de
	    Abort.
	"
	log="$I: Library $lib missing, ABORT."; eval $E_log
	exit -1
    fi
done

INST_PROGS=
#
#	installierte Programme testen
#
for prog in $PROGS / ; do
    case $prog in /) continue ;; esac
    if [ -x $prog ] ; then
	INST_PROGS="$INST_PROGS $prog"
	log="$I: Program $prog is installed"; eval $E_log
    fi
done

#
#	installierte Programme zur Ausfuehrung anbieten
#
while : ; do
echo ""
nr=0
for prog in $INST_PROGS / ; do
    case $prog in /) continue ;; esac
    if [ -x $prog ] ; then
	nr=`expr $nr + 1`
	echo "${nr}: Program $prog"
	eval "pgm_${nr}=\"$prog\""
    fi
done
echo ""
if [ $nr -eq 0 ] ; then
    echo "
	There are no programs installed.
	Please download under http://www.hexagon.de
	"
    exit 0
fi

echo $N "to start a program enter the corresponding number or e or q for end:  $C"
read ans
case X$ans in
    X[eEqQ]) exit 0 ;;
    X[0-9]*)
	if [ $ans -gt 0 -a $ans -le $nr ] ; then
	    eval "startpgm=\$pgm_${ans}"
	    echo "START OF $startpgm"
	    log="$I: Program $startpgm startet"; eval $E_log
	    ./$startpgm
	else
	    echo "invalid Programnumber"
	fi
	;;
    *) echo "invalid input" ;;
esac
done

exit 0 

