#!/bin/sh

# Copyright notice: Copyright (c) 2005 - 2025 Veryant

ISCOBOL_VERSION=2025R1
ISCOBOL_BVERSION=2025

ISCOBOLWD_CSS="\
iscobol.css
"

ISCOBOLWD_JAJARTA_LIB="\
breeze.jar \
bsh.jar \
closure-compiler-unshaded.jar \
commons-collections4.jar \
commons-fileupload.jar \
commons-io.jar \
Filters.jar \
flashchart.jar \
gmapsz.jar \
gson.jar \
iswd2.jar \
sapphire.jar \
silvertail.jar \
slf4j-api.jar \
timelinez.jar \
timeplotz.jar \
za11y.jar \
zcommon.jar \
zel.jar \
zhtml.jar \
zk-bootstrap.jar \
zk.jar \
zkbind.jar \
zkex.jar \
zkmax.jar \
zkplus-legacy.jar \
zkplus.jar \
zkwebfragment.jar \
zml.jar \
zsoup.jar \
zul.jar \
zuti.jar \
zweb-dsp.jar
"

ISCOBOLWD_JEE_LIB="\
breeze.jar \
bsh.jar \
closure-compiler-unshaded.jar \
commons-collections4.jar \
commons-fileupload.jar \
commons-io.jar \
Filters.jar \
flashchart.jar \
gmapsz.jar \
gson.jar \
iswd2.jar \
sapphire.jar \
silvertail.jar \
slf4j-api.jar \
timelinez.jar \
timeplotz.jar \
za11y.jar \
zcommon.jar \
zel.jar \
zhtml.jar \
zk-bootstrap.jar \
zk.jar \
zkbind.jar \
zkex.jar \
zkmax.jar \
zkplus-legacy.jar \
zkplus.jar \
zkwebfragment.jar \
zml.jar \
zsoup.jar \
zul.jar \
zuti.jar \
zweb-dsp.jar \
zweb.jar
"

ISCOBOLWD_JAJARTA_XML="\
portlet.xml \
web.xml \
zk.xml
"

ISCOBOLWD_JEE_XML="\
portlet.xml \
web.xml \
zk.xml
"

ISCOBOLWD_SAMPLE="\
eis/webdirect \
modernization/eis/webdirect
"

# Subroutines
getOS()
{
OS=`uname -a`
case $OS in
  SunOS*)    MACHINE_SUFFIX="SunOS.32"         SHARED_LIB_EXT="so" ;;
  SCO*)      MACHINE_SUFFIX="SCO_SV"           SHARED_LIB_EXT="so";;
  Linux*)    MACHINE_SUFFIX="Linux.32.i586"    SHARED_LIB_EXT="so" ;;
  Darwin*)   MACHINE_SUFFIX="MacOSX.64.x86_64" SHARED_LIB_EXT="jnilib" ISCOBOL_JDK_ROOT="/usr" ;;
  AIX*)      MACHINE_SUFFIX="AIX.32"           SHARED_LIB_EXT="so" ;;
  HP-UX*9000*) MACHINE_SUFFIX="HP-UX.9000.32"  SHARED_LIB_EXT="sl" ;;  
  HP-UX*)    MACHINE_SUFFIX="HP-UX.32"         SHARED_LIB_EXT="so" ;;
esac

BIT=`uname -a`
case $BIT in
  SunOS*64)    MACHINE_SUFFIX="SunOS.64"        SHARED_LIB_EXT="so" ;;
  Linux*64*)   MACHINE_SUFFIX="Linux.x86_64"    SHARED_LIB_EXT="so" ;;
  AIX*64)      MACHINE_SUFFIX="AIX.64"          SHARED_LIB_EXT="so" ;;
  HP-UX*9000*64) MACHINE_SUFFIX="HP-UX.9000.64" SHARED_LIB_EXT="sl" ;;  
  HP-UX*64)      MACHINE_SUFFIX="HP-UX.64"      SHARED_LIB_EXT="so" ;;
esac

}


echobsd ()
{
  echo -n "$*"
}

echoiBCS2 ()
{
  echo "${*}\c"
}

if [ `echo "x\c"` = "x" ]; then
  echonl=echoiBCS2
else
  echonl=echobsd
fi

YesNo () {
  ans=;
  DefAns=`echo $2| tr "[a-z]" "[A-Z]"| cut -c -1`
  SHOW='Y/n'
  if [ "X$DefAns" = "XN" ]; then SHOW='y/N'; fi
  if [ "X$DefAns" != "XY" -a "X$DefAns" != "XN" ]; then DefAns='Y'; fi
  while [ "X$ans" = "X" ]; do
    $echonl "$1 ($SHOW)? "
    read ans
    ans=`echo $ans| tr "[a-z]" "[A-Z]"`
    if [ "X$ans" = "X" ]; then ans=$DefAns; fi
    case $ans in
      Y|YES) ans=yes;;
      N|NO ) ans=no;;
      *)     ans=;;
    esac
  done
}

InsYesNo () {
  YesNo "Do you want to install the $1." "$2"
}

ReadKey () {
  ans=;
  while [ "X$ans" = "X" ]; do
    $echonl "$1 [ $2 ] "
    read ans
    ans=`echo $ans| tr "[a-z]" "[A-Z]"| cut -c -2`
    if [ "X$ans" = "X" ]; then ans=`echo $3| cut -c -2`; fi
    for arg in $2; do
      if [ "X$arg" = "X$ans" ]; then ans=$arg; break; fi
    done
    if [ "X$arg" != "X$ans" ]; then ans=; fi
  done
}
ShowOpt () {
  len=`echo "$1" | wc -c | sed -e 's/ //g'`
  count=`expr $2 - $len`
  $echonl $1
  echo $count "$3" | awk '{ for (i=0; i<= $1; i++) printf $2 }'
}

_Logo () {
  cat << EOF


Please read README.md to learn how to use isCOBOL and information
specific to isCOBOL ${ISCOBOL_VERSION}.


EOF
}


Logo () {
  clear
  s0=`Center "isCOBOL WebDirect Installation" 79`
  s1=`Center "For isCOBOL Release ${ISCOBOL_VERSION}" 79`
  s2=`Center "Copyright (c) 2005 - 2025 Veryant" 79`
  cat << EOF
===============================================================================

$s0
$s1
$s2

===============================================================================
EOF
}

Center () {
  len=`echo "$1" | wc -c | sed -e 's/ //g'`
  left=`expr $2 - \( $2 - $len \) / 2`
  printf "%${left}s" "$1"
}

ShowMain () {
  Logo
  cat << EOF

Install Components:

    [0] `ShowOpt "$ISCOBOLALL_TITLE" 50 "."` (${ISCOBOLALL_INSTALL})
    [1] `ShowOpt "$ISCOBOLWD_JAKARTA_TITLE" 50 "."` (${ISCOBOLWD_JAKARTA_INSTALL})
    [2] `ShowOpt "$ISCOBOLWD_JEE_TITLE" 50 "."` (${ISCOBOLWD_JEE_INSTALL})


Install Path:
    [P] $ISCOBOL_PATH_TITLE: $ISCOBOL_INSTALLATION_TITLE

[S] Start Install        [Q] Quit

==============================================================================
EOF
}

WDMenu_jakarta () {
  echo
    InsYesNo "$ISCOBOLWD_JAKARTA_TITLE" "$ISCOBOLWD_JAKARTA_INSTALL"
    ISCOBOLWD_JAKARTA_INSTALL=$ans
}
WDMenu_jee () {
  echo
    InsYesNo "$ISCOBOLWD_JEE_TITLE" "$ISCOBOLWD_JEE_INSTALL"
    ISCOBOLWD_JEE_INSTALL=$ans
}
AllMenu () {
  echo
    InsYesNo "$ISCOBOLALL_TITLE" "$ISCOBOLALL_INSTALL"
    ISCOBOLWD_JAKARTA_INSTALL=$ans
    ISCOBOLWD_JEE_INSTALL=$ans
    ISCOBOLALL_INSTALL=$ans
}
OSMenu () {
  echo
    $echonl "$OS_TITLE: "
    read ans
    if [ "$ans" = "" ]; then
       echo "Possible choices are: " 
       echo 
       echo "Linux.32.i586, Linux.64.x86_64, AIX.32, AIX.64, HP-UX.32, HP-UX.64"
       echo "HP-UX.9000.32, HP-UX.9000.64, SunOS.32, SunOS.64 , MacOSX.64.x86_64 , SCO_SR , SCO_SV" 
       echo
       $echonl "$OS_TITLE: "
       read ans
    fi
    if [ "$ans" != "" ]; then
          MACHINE_SUFFIX=$ans
    fi
}

InstallPathMenu () {
    $echonl "$ISCOBOL_PATH_TITLE: "
    read ans
    if [ "$ans" != "" ]; then
      if [ -d "$ans" ]; then
          ISCOBOL_INSTALLATION_TITLE=$ans
          ISCOBOL_INSTALLATION_PATH=$ans/isCOBOL_WEBC$ISCOBOL_VERSION
      fi
    fi
}

ISCOBOLWD_TITLE="isCOBOL WebClient"
ISCOBOLWD_INSTALL="yes"
ISCOBOLWD_JAKARTA_TITLE="isCOBOL WebDirect library for Jakarta Servlet"
ISCOBOLWD_JAKARTA_INSTALL="yes"
ISCOBOLWD_JEE_TITLE="isCOBOL WebDirect library for JEE Servlet"
ISCOBOLWD_JEE_INSTALL="no"

ISCOBOLALL_TITLE="All products"
ISCOBOLALL_INSTALL="no"


OS_TITLE="Operating System to be used" 
MACHINE_SUFFIX="unknow"

ISCOBOL_PATH_TITLE="isCOBOL parent directory"
ISCOBOL_INSTALLATION_PATH=$HOME/veryant/isCOBOL_SDK$ISCOBOL_VERSION
ISCOBOL_INSTALLATION_TITLE=$HOME/veryant

while [ 1 ]; do
  ShowMain
  ReadKey "Please press" "0 1 2 P S Q"
  case $ans in
  0) AllMenu
     ;;
  1) WDMenu_jakarta
     ;;
  2) WDMenu_jee
     ;;
  P) InstallPathMenu
     ;;
  S) break
     ;;
  Q) exit 1
     ;;
  esac
done

echo "Start install ......"

if [ ! -d ${ISCOBOL_INSTALLATION_PATH}/webdirect ]; then
  mkdir ${ISCOBOL_INSTALLATION_PATH}/webdirect
else
  YesNo "Do you want to remove the old version." "NO"
  if [ $ans = no ]; then
    echo "Installation updating."
  else
    rm `ls --ignore=*.tar --ignore=setupwebd ` -rf
  fi
fi

echo
echo "Installing: " $ISCOBOL_TITLE "for" $MACHINE_SUFFIX 
echo " on" ${ISCOBOL_INSTALLATION_PATH} 
echo

rm -rf .tmp
mkdir .tmp
cd .tmp
tar -xf ../isCOBOL_2025_R1_1145_9_20250707_40290_WEBD_MacOSX.64.ARM_64.tar

#default java to be used

mkdir -p ${ISCOBOL_INSTALLATION_PATH}/webdirect/css
mkdir -p ${ISCOBOL_INSTALLATION_PATH}/webdirect/lib
mkdir -p ${ISCOBOL_INSTALLATION_PATH}/webdirect/xml


# isCOBOL WebDirect Jakarta

if [ "$ISCOBOLWD_JAKARTA_INSTALL" = 'yes' ]; then
   echo "Installing: " $ISCOBOLWD_JAKARTA_TITLE
   
   for i in $ISCOBOLWD_JAJARTA_LIB
   do
     cp -f webdirect/lib/$i ${ISCOBOL_INSTALLATION_PATH}/webdirect/lib &&
      (:) || ( echo "ERROR!:" $ISCOBOLWD_JAKARTA_TITLE " installation failed ($i)" )
   done

   for i in $ISCOBOLWD_JAJARTA_XML
   do
     cp -f webdirect/xml/$i ${ISCOBOL_INSTALLATION_PATH}/webdirect/xml &&
      (:) || ( echo "ERROR!:" $ISCOBOLWC_TITLE " installation failed ($i)" )
   done

   for i in $ISCOBOLWD_CSS
   do
     cp -f webdirect/css/$i ${ISCOBOL_INSTALLATION_PATH}/webdirect/css &&
      (:) || ( echo "ERROR!:" $ISCOBOLWC_TITLE " installation failed ($i)" )
   done

   for i in $ISCOBOLWD_SAMPLE
   do 
     if ls sample/$i 1> /dev/null 2>&1; then
       cp -r -f sample/$i "${ISCOBOL_INSTALLATION_PATH}/sample" && 
        (:) || ( echo "ERROR!:" $ISCOBOLWD_TITLE " installation failed ($i)" )
     fi  
   done

fi

# isCOBOL WebDirect JEE

if [ "$ISCOBOLWD_JEE_INSTALL" = 'yes' ]; then
   echo "Installing: " $ISCOBOLWD_JEE_TITLE
   mkdir -p ${ISCOBOL_INSTALLATION_PATH}/webdirect/lib/jee
   mkdir -p ${ISCOBOL_INSTALLATION_PATH}/webdirect/xml/jee
   
   for i in $ISCOBOLWD_JEE_LIB
   do
     cp -f webdirect/lib/jee/$i ${ISCOBOL_INSTALLATION_PATH}/webdirect/lib/jee &&
      (:) || ( echo "ERROR!:" $ISCOBOLWD_JAKARTA_TITLE " installation failed ($i)" )
   done

   for i in $ISCOBOLWD_JEE_XML
   do
     cp -f webdirect/xml/jee/$i ${ISCOBOL_INSTALLATION_PATH}/webdirect/xml/jee &&
      (:) || ( echo "ERROR!:" $ISCOBOLWC_TITLE " installation failed ($i)" )
   done

   for i in $ISCOBOLWD_CSS
   do
     cp -f webdirect/css/$i ${ISCOBOL_INSTALLATION_PATH}/webdirect/css &&
      (:) || ( echo "ERROR!:" $ISCOBOLWC_TITLE " installation failed ($i)" )
   done

   for i in $ISCOBOLWD_SAMPLE
   do 
     if ls sample/$i 1> /dev/null 2>&1; then
       cp -r -f sample/$i "${ISCOBOL_INSTALLATION_PATH}/sample" && 
        (:) || ( echo "ERROR!:" $ISCOBOLWD_TITLE " installation failed ($i)" )
     fi  
   done
      
fi


#clean up temporary directory
cd ..
rm -rf .tmp
_Logo