#!/bin/ksh

#####################################
# Defines
#####################################

STATE_FILE="${ROOTDIR}/etc/opt/SUNWps/PSConfig.properties"
SAMPLE_PACKAGE="SUNWpssp"
SSO_PACKAGE="SUNWpsssoa_pkg"
CONTAINER_PACKAGE="SUNWpsc_pkg"
PORTLET_PACKAGE="SUNWpsp_pkg"
PORTLET_SAMPLE_PACKAGE="SUNWpsps_pkg"
WSRP_PACKAGES="SUNWpswsrpcommon_pkg SUNWpswsrpconsumer_pkg SUNWpswsrpproducer_pkg"
WSRP_CONFIG_PACKAGE="SUNWpswsrpconsumerconfig_pkg"
WSRP_SAMPLE_PACKAGES="SUNWpswsrpconsumersample_pkg SUNWpswsrpproducersample_pkg"

###############################################
# Get configuration from file
###############################################
GrabConfig() {
  FILE="$1"
  KEY="$2"
  SEPARATOR="$3"

  ANSWER=`/usr/bin/grep "^$KEY$SEPARATOR" $FILE | /usr/bin/uniq | /usr/bin/sed -e "s/$KEY$SEPARATOR//"`
}

#####################################
# Add package
#####################################
AddPackage() {
  PACKAGES="$1"
  BASEDIR="$2"

  RESPONSE_FILE=/tmp/"$PatchNum"_response_"$$"
  ADMIN_FILE=/tmp/"$PatchNum"_admin_"$$"
  PACKAGE_DIR="$patchdir"

  /usr/bin/cat > $RESPONSE_FILE << EOF
BASEDIR=$BASEDIR
IDSAME_BASEDIR=$IDSAME_BASEDIR
EOF

  /usr/bin/cat > $ADMIN_FILE << EOF
mail=
instance=unique
partial=nocheck
runlevel=nocheck
idepend=nocheck
rdepend=nocheck
space=quit
setuid=nocheck
conflict=nocheck
action=nocheck
EOF

  for PACKAGE in $PACKAGES; do
    TEST_PACKAGE=`/usr/bin/echo $PACKAGE | /usr/bin/sed -e 's/_pkg//'`
    /usr/bin/pkginfo -R ${ROOTDIR} -q $TEST_PACKAGE
    if [ $? -ne 0 ]; then
      /usr/bin/echo "Adding $PACKAGE at $BASEDIR..."
      /usr/sbin/pkgadd -n -R ${ROOTDIR} -r $RESPONSE_FILE -a $ADMIN_FILE -S -d $PACKAGE_DIR/$PACKAGE all
      if [ $? != 0 ]; then
	/usr/bin/echo "$PACKAGE failed to install!"
	exit 1
      fi
    fi
  done
  /usr/bin/rm -f $ADMIN_FILE $RESPONSE_FILE
}

#####################################
# Main
#####################################

if [ ! -f $STATE_FILE ]; then
  /usr/bin/echo "Error: $STATE_FILE does not exist."
  exit 1
fi

GrabConfig $STATE_FILE "BASEDIR" "="
if [ "$ANSWER" != "" ]; then
  PS_BASEDIR=$ANSWER
else
  /usr/bin/echo "Error: Cannot determine BASEDIR."
  exit 1
fi
GrabConfig $STATE_FILE "IDSAME_BASEDIR" "="
if [ "$ANSWER" != "" ]; then
  IDSAME_BASEDIR=$ANSWER
else
  /usr/bin/echo "Error: Cannot determine IDSAME_BASEDIR."
  exit 1
fi
GrabConfig $STATE_FILE "DEPLOY_TYPE" "="
if [ "$ANSWER" != "" ]; then
  DEPLOY_TYPE=$ANSWER
else
  /usr/bin/echo "Error: Cannot determine DEPLOY_TYPE."
  exit 1
fi

AddPackage "$SSO_PACKAGE" "$PS_BASEDIR"
if [ "$DEPLOY_TYPE" = "WEBSPHERE" ]; then
  AddPackage "$CONTAINER_PACKAGE $PORTLET_PACKAGE" "$PS_BASEDIR"
fi
AddPackage "$WSRP_PACKAGES" "$PS_BASEDIR"
AddPackage "$WSRP_CONFIG_PACKAGE" "/"

/usr/bin/pkginfo -R ${ROOTDIR} -q $SAMPLE_PACKAGE
if [ $? -eq 0 ]; then
  if [ "$DEPLOY_TYPE" = "WEBSPHERE" ]; then
    AddPackage "$PORTLET_SAMPLE_PACKAGE" "$PS_BASEDIR"
  fi
  AddPackage "$WSRP_SAMPLE_PACKAGES" "$PS_BASEDIR"
fi

exit 0

