#!/bin/ksh -p
#
# ident "@(#)utinstall.ksh	1.18 05/07/25 SMI"
#
# Copyright 2004-2005 Sun Microsystems, Inc.  All rights reserved.
# Use is subject to license terms.
#

PATH=/bin:/usr/bin:/usr/sbin

OS="$(uname -s)"

GetPROGRAM_DIR() {
  (cd $1; pwd)
}

PROGRAM="$0"
PROGRAM_ID="$(basename $PROGRAM)"
PDIR="$(dirname $PROGRAM)"
PROGRAM_DIR="$(GetPROGRAM_DIR $PDIR)"

Usage() {
  cat 1>&2 <<-!
	Usage: $G_PROGRAM_ID $PROGRAM_OPTS"

	 -a admin_file
	         specify an admin(4) file to be used by pkgadd(1m)
		 calls during install (Solaris only)

	 -d media_dir
	         specify a directory to install the software from

	 -j jre
	         specify a directory to find the Java Runtime Environment

	 -u      uninstall the software
	!

  exit 1
}

Fatal() {
  print -u2 "$PROGRAM_ID: fatal, $1"
  exit 1
}

CheckSetOptA() {
  case "$OS" in
    Linux) Fatal "can not use option '-a' on Linux";;
    *)     ARGS="$ARGS -a $1"; OPT_A=true;;
  esac
}

# main() {

LICENSE_AGREEMENT="$PROGRAM_DIR/.install/SRSSv3.SLA.txt"

OPTSTR="a:d:j:ufv"
PROGRAM_OPTS="[-a admin_file] [-d media_dir] [-j jre] [-u]"

OPT_F=false
OPT_A=false
OPT_D=false
ARGS=""

while getopts $OPTSTR OPT; do
  case "$OPT" in
    f)   ARGS="$ARGS -$OPT"; OPT_F=true;;
    u|v) ARGS="$ARGS -$OPT";;
    a)   CheckSetOptA "$OPTARG";;
    d)   ARGS="$ARGS -d $OPTARG"; OPT_D=true;;
    j)   ARGS="$ARGS -j $OPTARG";;
    *)   Usage;;
  esac
done
shift $(($OPTIND - 1))

if (( $# != 0 )); then
  Usage
fi

PROMPT="Accept (Y/N):"

if $OPT_F; then
  cat $LICENSE_AGREEMENT
  print "$PROMPT Y"   # answer 'Y' is supplied
else
  more $LICENSE_AGREEMENT

  while true; do
    print -n "$PROMPT "
    read RESPONSE
    case "$RESPONSE" in
      [Yy]|[Yy][Ee][Ss]) break;;
      [Nn]|[Nn][Oo])     exit 1;;
    esac
  done
fi

case "$(id)" in
  'uid=0('*) ;; # ok uid is zero (root)
  *) Fatal "must be run as 'root'";;
esac

TMP_DIR="/tmp/$PROGRAM_ID.$$"

rm -rf $TMP_DIR

mkdir -p $TMP_DIR/opt

OS="$(uname -s)"

ISA="$(uname -m)"
case "$ISA" in
  sun4*)      ISA=sparc;;
  i?86*|i86*) ISA=i386;;
esac  

CORE_DIR="$PROGRAM_DIR/Sun_Ray_Core_Services_3.1"
case "$OS" in
SunOS)
  case "$ISA" in
    sparc) PKG_DIR="$CORE_DIR/Solaris_8+/sparc/Packages";;
    i386)  PKG_DIR="$CORE_DIR/Solaris_10+/i386/Packages";;
  esac
  cp $PROGRAM_DIR/.install/admin_default $TMP_DIR
  pkgadd -n -R $TMP_DIR -a $TMP_DIR/admin_default -d $PKG_DIR SUNWuti
  if [ $? -ne 0 ]; then
    Fatal "SRSS installer installation failed"
  fi
  ;;

Linux)
  PKG_DIR="$CORE_DIR/Linux/Packages"
  mkdir -p $TMP_DIR/bin
  mkdir -p $TMP_DIR/var/lib/rpm
  PKGS_RPM="/var/lib/rpm/packages.rpm"
  if [[ -f $PKGS_RPM ]]; then
    ln -s $PKGS_RPM $TMP_DIR$PKGS_RPM
  fi
  rpm --root $TMP_DIR --initdb
  rpm --root $TMP_DIR --nodeps -i $PKG_DIR/SUNWuti-3.1-?*.i386.rpm
  ;;
esac

if [[ "$OS" != "Linux" ]]; then
  if ! $OPT_A; then
    ARGS="$ARGS -a $TMP_DIR/opt/SUNWut/etc/admin_default"
  fi
fi

if ! $OPT_D; then
  ARGS="$ARGS -d ${PROGRAM_DIR}"
fi

$TMP_DIR/opt/SUNWut/sbin/utinstall $ARGS

rm -rf $TMP_DIR
#
# no need to 'pkgrm' or 'rmp -e' the SUNWuti pkg in TMP_DIR

exit 0

# }
