#!/bin/ksh -p
#
# ident "$Id$"
#
# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
# Use is subject to license terms.
#

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

OS="$(uname -s)"

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

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

PROGRAM_ID="${0##*/}"
PROGRAM_DIR="$(GetPROGRAM_DIR ${0%/*})"

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

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

	   -d dir
	      specify a directory to install the software from
	!

  exit 1
}

Error() {
  print -u2 "$PROGRAM_ID: error, $1"
}

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

# main() {

OPTSTR="a:d:fv"
PROGRAM_OPTS="[-a admin_file] [-d media_dir]"

FORCE=false
OPT_V=""
IMAGE_ROOT=""
ADMIN_FILE=""

while getopts $OPTSTR OPT; do
  case "$OPT" in
    f) FORCE=true;;
    v) OPT_V="-v";;
    d) IMAGE_ROOT="$OPTARG";;
    a) ADMIN_FILE="$OPTARG";;
    *) Usage;;
  esac
done
shift $(($OPTIND - 1))

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

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

case "$OS" in
  SunOS) SRSS_VERSION="$(pkgparam SUNWuto VERSION 2>&-)";;
  Linux) SRSS_VERSION="$(rpm -q --queryformat='%{VERSION}_\n' SUNWuto 2>&-)";;
esac

case "$SRSS_VERSION" in
  3.1_*) SRSS31_IS_INSTALLED=true;;
  *)     SRSS31_IS_INSTALLED=false;;
esac

if ! $SRSS31_IS_INSTALLED; then
  Fatal "Sun Ray Server Software 3.1 is not installed"
fi

if [[ -z "$IMAGE_ROOT" ]]; then
  IMAGE_ROOT="$PROGRAM_DIR"
fi

if [[ ! -d $IMAGE_ROOT ]]; then
  Fatal "'$IMAGE_ROOT' is not a directory"
fi

case "$OS" in
SunOS)
  if [[ -z "$ADMIN_FILE" ]]; then
    ADMIN_FILE="$IMAGE_ROOT/.install/admin_default"
  fi
  if [[ ! -r $ADMIN_FILE ]]; then
    Fatal "can not read '$ADMIN_FILE'"
  fi
  ;;

Linux)
  if [[ -n "$ADMIN_FILE" ]]; then
    Fatal "can not specify -a option on Linux"
  fi
  ;;
esac

LICENSE_AGREEMENT="$IMAGE_ROOT/.install/SLA.txt"
PROMPT="Accept (Y/N):"

if $FORCE; 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

PRODUCT_ROOT="$IMAGE_ROOT/Sun_Ray_Connector_1.0"

print "\n+++ Installing 'Sun Ray Connector 1.0'"

PKG="SUNWuttsc"

print "\n+++ Adding '$PKG'"

case "$OS,$ISA" in
  SunOS,sparc) DIR="$PRODUCT_ROOT/Solaris_8+/sparc/Packages";;
  SunOS,i386)  DIR="$PRODUCT_ROOT/Solaris_10+/i386/Packages";;
  Linux,i386)  DIR="$PRODUCT_ROOT/Linux/Packages";;
esac

case "$OS" in
SunOS)
  if pkginfo -q $PKG; then
    Error "package '$PKG' is already installed"
  else
    pkgadd $OPT_V -a $ADMIN_FILE -d $DIR $PKG
  fi
  ;;

Linux)
  if rpm -q $PKG 1>&- 2>&-; then
    Error "RPM '$PKG' is already installed"
  else
    if [[ -n "$OPT_V" ]]; then
     OPT_V="-vv"
    fi
    rpm $OPT_V -i --nodeps $DIR/$PKG-*.rpm
  fi
  ;;
esac

exit 0
# }
