#!/bin/sh

# This script is used to uninstall the localized packages of the SUN ONE Instant Messaging 
# components
# Usage uninstall.sh [ messenger | identity | portal ]
#       uninstall.sh without any options uninstalls the localized packages of all the 
# components.


OS="`uname -s`"
ECHO=/bin/echo
GREP=/bin/grep
SED=/bin/sed
CUT=/bin/cut
RM=/bin/rm
MV=/bin/mv

if [ "$OS" = "SunOS" ]; then
  PKGINFO=/usr/bin/pkginfo
  PKGRM=/usr/sbin/pkgrm
  PKGPARAM=/usr/bin/pkgparam
elif [ "$OS" = "Linux" ]; then
  RPM=/bin/rpm
else
  echo "$OS not supported, sorry."
  exit 1
fi

remove_localized_pkg(){

   list_of_packages="$1"

   enPkg="$2"
   im_product_name="Sun ONE Instant Messaging"

   for pkg in $list_of_packages
   do
     if [ "$OS" = "SunOS" ]; then
          
          im_product_name=`${PKGPARAM} -v  ${enPkg} | ${GREP} "^PRODUCT_NAME=" | ${CUT} -f2 -d= | ${SED} s/\'//g`   

          locale=`${PKGPARAM} -v  ${pkg} | ${GREP} "^LOCALE=" | ${CUT} -f2 -d= | ${SED} s/\'//g`   
          if [ $locale != "en" ]; then
               product_name=`${PKGPARAM} -v  ${pkg} | ${GREP} "^PRODUCT_NAME=" | ${CUT} -f2 -d= | ${SED} s/\'//g`   
               if [ "$product_name" = "$im_product_name" ]; then 
                     ${ECHO} "Uninstalling package $pkg" 
                     ${PKGRM} -n -a /tmp/adminFile.$$ $pkg > /dev/null 2>&1
                     if [ $? -eq 0 ]; then
                        ${ECHO} "Sucessfully uninstalled the package $pkg" 
                     else
                        ${ECHO} "Failed to uninstall the package $pkg" 

                     fi
               fi
          fi
     elif [ "$OS" = "Linux" ]; then

          #TODO get initalize the im_product_name from the enPkg

	  locale=`echo $pkg|awk -F- '{print $2}'`
	  if [ "$locale" != "" ]; then
		${RPM} -q -i ${pkg} | ${SED} -e '1,/^Descrip/d'|head -1| \
			grep $im_product_name > /dev/null 2>&1
		if [[ $? = 0 ]] ; then
		     ${RPM} -e $pkg
		fi
	  fi
     fi
   done

  ## remove the pkgs from the list
  if [ "$enPkg" = "SUNWiimc" ]; then

         ${SED} -e /messenger/d ${localizedPkgListFile} > ${localizedPkgListFile}.tmp
         ${MV} ${localizedPkgListFile}.tmp ${localizedPkgListFile}

  elif [ "$enPkg" = "SUNWiimid" ]; then

         ${SED} -e /identity/d ${localizedPkgListFile} > ${localizedPkgListFile}.tmp
         ${MV} ${localizedPkgListFile}.tmp ${localizedPkgListFile}

  elif [ "$enPkg" = "SUNWiimps" ]; then

         ${SED} -e /portal/d ${localizedPkgListFile} > ${localizedPkgListFile}.tmp
         ${MV} ${localizedPkgListFile}.tmp ${localizedPkgListFile}

  elif [ "$enPkg" = "SUNWiim" ]; then

           ${ECHO} "server package does not have localized resources "
  else 
        ${ECHO} "remove_localized_pkg: Invalid en Package Name passed as an argument"
  fi

  #remove the list ofpackage file if it is empty
  size=`du ${localizedPkgListFile} | awk '{ print $1 }'`
  if [ ${size} -eq 0 ]; then
      ${RM} ${localizedPkgListFile} 
  fi

}


remove_all_localized_packages(){

    list_of_client_pkgs=`${GREP} "messenger"  ${localizedPkgListFile} | awk -F: '{ print $2 }'` 
    list_of_identity_pkgs=`${GREP} "identity" ${localizedPkgListFile} | awk -F: '{ print $2 }'` 
    list_of_portal_pkgs=`${GREP} "portal" ${localizedPkgListFile} | awk -F: '{ print $2 }'` 
    #list_of_server_pkgs=`${GREP} "server" ${localizedPkgListFile} | awk -F: '{ print $2 }'`


  if [ "$OS" = "SunOS" ]; then

    remove_localized_pkg "$list_of_client_pkgs" "SUNWiimc"
    remove_localized_pkg "$list_of_identity_pkgs" "SUNWiimid"
    remove_localized_pkg "$list_of_portal_pkgs" "SUNWiimps"
    #remove_localized_pkg "$list_of_mux_pkgs" "SUNWiimm"
    #remove_localized_pkg "$list_of_server_pkgs" "SUNWiim"

  elif [ "$OS" = "Linux" ]; then

    remove_localized_pkg "$list_of_client_pkgs" "soimc"
    #remove_localized_pkg "$list_of_doc_pkgs" "soimd"
    #remove_localized_pkg "$list_of_mux_pkgs" "soimm"
    #remove_localized_pkg "$list_of_server_pkgs" "soim"
  fi

}

getImHome(){

if [ "$OS" = "SunOS" ]; then
      ${PKGINFO} SUNWiim > /dev/null 2>&1 
      if [ $? -eq 0 ]; then
           BASEDIR=`${PKGPARAM} -v SUNWiim | ${GREP} BASEDIR= | ${CUT} -f2 -d= | ${SED} -e s/\'//g`
           IM_HOME=$BASEDIR/SUNWiim

           return
      fi 
      rc=$PKGINFO SUNWiimc
      if [ $rc -eq 0 ]; then
           BASEDIR=`${PKGPARAM} -v SUNWiimc | ${GREP} BASEDIR= | ${CUT} -f2 -d= | ${SED} -e s/\'//g`
           IM_HOME=$BASEDIR/SUNWiim

           return
      fi 
      rc=$PKGINFO SUNWiimid
      if [ $rc -eq 0 ]; then
           BASEDIR=`${PKGPARAM} -v SUNWiimid | ${GREP} BASEDIR= | ${CUT} -f2 -d= | ${SED} -e s/\'//g`
           IM_HOME=$BASEDIR/SUNWiim

           return
      fi
      rc=$PKGINFO SUNWiimps
      if [ $rc -eq 0 ]; then
           BASEDIR=`${PKGPARAM} -v SUNWiimps | ${GREP} BASEDIR= | ${CUT} -f2 -d= | ${SED} -e s/\'//g`
           IM_HOME=$BASEDIR/SUNWiim
           return
      fi
elif [ "OS" = "Linux" ]; then 
     ## TODO linux -initialized the IM_HOME variable to $BASEDIR/soim
     ${ECHO} "TODO for Linux "

else 
      ${ECHO} "Unsupported OS $OS "

fi
 
}


if [ $# -ne 1 ]; then
   component="all"
else
   component=$1
fi

getImHome

localizedPkgListFile="${IM_HOME}/l10n_pkgs"

if [ "$OS" = "SunOS" ]; then
  ${ECHO} "action=nocheck" >> /tmp/adminFile.$$
  list_of_im_pkgs=`pkginfo | awk '{print $2}' | grep SUNWiim`
elif [ "$OS" = "Linux" ]; then
  # strip trailing version to emulate the same info Solaris gathers
  list_of_im_pkgs=`${RPM} -q --all |grep soim|${SED} 's/-[0-9.-]*//'`
else
  echo "$OS not supported, sorry."
  exit 1
fi

if [ "X$component" = "Xmessenger" ]; then

   list_of_client_pkgs=`${GREP} "messenger"  ${localizedPkgListFile} | awk -F: '{ print $2 }'` 

  if [ "$OS" = "SunOS" ]; then
      remove_localized_pkg "$list_of_client_pkgs" "SUNWiimc"
      #list_of_doc_pkgs=`${ECHO} "$list_of_im_pkgs" | grep ^SUNWiimd`
      #remove_localized_pkg "$list_of_doc_pkgs" "SUNWiimd" ;
  elif [ "$OS" = "Linux" ]; then
      remove_localized_pkg "$list_of_client_pkgs" "soimc"
      #list_of_doc_pkgs=`${ECHO} "$list_of_im_pkgs" | grep ^soimd`
      #remove_localized_pkg "$list_of_doc_pkgs" "soimd" ;
  fi

elif [ "X$component" = "Xidentity" ]; then

   list_of_identity_pkgs=`${GREP} "identity"  ${localizedPkgListFile} | awk -F: '{ print $2 }'` 
  if [ "$OS" = "SunOS" ]; then
      remove_localized_pkg "$list_of_identity_pkgs" "SUNWiimid" ;
  fi

elif [ "X$component" = "Xserver" ]; then
   list_of_server_pkgs=`${GREP} "server"  ${localizedPkgListFile} | awk -F: '{ print $2 }'` 

  if [ "$OS" = "SunOS" ]; then
      #list_of_mux_pkgs=`${ECHO} "$list_of_im_pkgs" | grep ^SUNWiimm`
      #remove_localized_pkg "$list_of_mux_pkgs" "SUNWiimm" ;
      remove_localized_pkg "$list_of_server_pkgs" "SUNWiim" ;
  elif [ "$OS" = "Linux" ]; then
      #list_of_mux_pkgs=`${ECHO} "$list_of_im_pkgs" | grep ^soimm`
      #remove_localized_pkg "$list_of_mux_pkgs" "soimm" ;
      remove_localized_pkg "$list_of_server_pkgs" "soim" ;
  fi

        
elif [ "X$component" = "Xportal" ]; then
   list_of_portal_pkgs=`${GREP} "portal"  ${localizedPkgListFile} | awk -F: '{ print $2 }'` 
  if [ "$OS" = "SunOS" ]; then
      remove_localized_pkg "$list_of_portal_pkgs" "SUNWiimps" ;
  fi

elif [ "X$component" = "Xall" ]; then
     remove_all_localized_packages 
else
    ${ECHO} "Error: Illegal argument"
    ${ECHO} "Usage: uninstall.sh [ messenger | identity | portal ] "
    ${ECHO} "with no argument the localized resources of all the comps will be removed" 

fi

if [ "$OS" = "SunOS" ]; then
  ${RM} /tmp/adminFile.$$
fi

exit 0
