#! /bin/bash
#------------------------------------------------------------------------------
#
# install_yast_icons
#
#------------------------------------------------------------------------------
# Comments to:
#   support@novell.com
#------------------------------------------------------------------------------
#
#  Copyright (C) 2005-2006 Novell, Inc. All Rights Reserved.
#
#  This library is free software; you can redistribute it and/or
#  modify it under the terms of the GNU Lesser General Public
#  License as published by the Free Software Foundation; version 2.1
#  of the License.
#
#  This library is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
#  Library Lesser General Public License for more details.
#
#  You should have received a copy of the GNU Lesser General Public
#  License along with this library; if not, Novell, Inc.
# 
#  To contact Novell about this file by physical or electronic mail, 
#  you may find current contact information at www.novell.com.
# 
#
#------------------------------------------------------------------------------
#
#   START_DIR    =   pwd - the current working directory
#                          this is the directory where this script is executed from
#
#------------------------------------------------------------------------------

VERSION=1.6
SCRIPT_NAME='install_casa_yast_icons'
START_DIR=`pwd`
DATE=`date`
SOURCE22_ICON=CASA_22.png
SOURCE32_ICON=CASA_32.png
SOURCE48_ICON=CASA_48.png
DEST_ICON=CASA.png

determineIfSourceExists ()
{
    if [ ! -e $ICON_SOURCE/$SOURCE22_ICON ]
    then
        echo ""
        echo "[$SCRIPT_NAME] ERROR: The icon source file:"
        echo "[$SCRIPT_NAME]   $ICON_SOURCE/$DIR_22/$ICON_FILE"
        echo "[$SCRIPT_NAME] was not found."
        echo ""
#        echo "ERROR: Icon source file not found: $ICON_SOURCE/$DIR_22/$ICON_FILE" 1>>$LOG_DIR_FILE
        exit 3
    fi
        
    if [ ! -e $ICON_SOURCE/$SOURCE32_ICON ]
    then
        echo ""
        echo "[$SCRIPT_NAME] ERROR: The icon source file:"
        echo "[$SCRIPT_NAME]   $ICON_SOURCE/$DIR_32/$ICON_FILE"
        echo "[$SCRIPT_NAME] was not found."
        echo ""
#        echo "ERROR: Icon source file not found: $ICON_SOURCE/$DIR_32/$ICON_FILE" 1>>$LOG_DIR_FILE
        exit 3
    fi

    if [ ! -e $ICON_SOURCE/$SOURCE48_ICON ]
    then
        echo ""
        echo "[$SCRIPT_NAME] ERROR: The icon source file:"
        echo "[$SCRIPT_NAME]   $ICON_SOURCE/$DIR_48/$ICON_FILE"
        echo "[$SCRIPT_NAME] was not found."
        echo ""
#        echo "ERROR: Icon source file not found: $ICON_SOURCE/$DIR_48/$ICON_FILE" 1>>$LOG_DIR_FILE
        exit 3
    fi
}

determineIfCopyDeleteRequired ()
{
    for YAST_THEME_DIR in $YAST_THEME_DIRS
    do
        if [ ! -h $YAST_THEME_DIR_PREFIX/$YAST_THEME_DIR ]
        then
            if [ -d $YAST_THEME_DIR_PREFIX/$YAST_THEME_DIR ]
            then
                if [ -e $YAST_THEME_DIR_PREFIX/$YAST_THEME_DIR/$ICONS_DIR/$DIR_22/$APPS_DIR/$ICON_FILE ]
                then
                    DELETE_ICONS="yes"
                else
                    COPY_ICONS="yes"
                fi 
        
                if [ -e $YAST_THEME_DIR_PREFIX/$YAST_THEME_DIR/$ICONS_DIR/$DIR_32/$APPS_DIR/$ICON_FILE ]
                then
                    DELETE_ICONS="yes"
                else
                    COPY_ICONS="yes"
                fi 
        
                if [ -e $YAST_THEME_DIR_PREFIX/$YAST_THEME_DIR/$ICONS_DIR/$DIR_48/$APPS_DIR/$ICON_FILE ]
                then
                    DELETE_ICONS="yes"
                else
                    COPY_ICONS="yes"
                fi 
            fi
        fi
    done
}


copyDeleteIcons ()
{
    for YAST_THEME_DIR in $YAST_THEME_DIRS
    do
        if [ -z "$LAUNCHER" ]
        then
            echo ""
        fi
        if [ -h $YAST_THEME_DIR_PREFIX/$YAST_THEME_DIR ]
        then
            if [ -z "$LAUNCHER" ]
            then
                echo "[$SCRIPT_NAME] skip  $YAST_THEME_DIR_PREFIX/$YAST_THEME_DIR because it is a link"
            fi
#            echo "skip  $YAST_THEME_DIR_PREFIX/$YAST_THEME_DIR because it is a link" 1>>$LOG_DIR_FILE
        else
            if [ -d $YAST_THEME_DIR_PREFIX/$YAST_THEME_DIR ]
            then
                if [ -z "$LAUNCHER" ]
                then
                    echo "[$SCRIPT_NAME] processing  $YAST_THEME_DIR_PREFIX/$YAST_THEME_DIR"
                fi
#                echo "processing  $YAST_THEME_DIR_PREFIX/$YAST_THEME_DIR" 1>>$LOG_DIR_FILE
                                
                if [ "$MODE" = "install" ]
                then
                    echo "[$SCRIPT_NAME] installing  $YAST_THEME_DIR_PREFIX/$YAST_THEME_DIR/$ICONS_DIR/$DIR_22/$APPS_DIR/$ICON_FILE"
#                    echo "installing  $YAST_THEME_DIR_PREFIX/$YAST_THEME_DIR/$ICONS_DIR/$DIR_22/$APPS_DIR/$ICON_FILE" 1>>$LOG_DIR_FILE
                    if [ ! -d $YAST_THEME_DIR_PREFIX/$YAST_THEME_DIR/$ICONS_DIR/$DIR_22/$APPS_DIR ]
                    then
                        mkdir -p $YAST_THEME_DIR_PREFIX/$YAST_THEME_DIR/$ICONS_DIR/$DIR_22/$APPS_DIR
                    fi
                    cp -r $ICON_SOURCE/$SOURCE22_ICON $YAST_THEME_DIR_PREFIX/$YAST_THEME_DIR/$ICONS_DIR/$DIR_22/$APPS_DIR/$DEST_ICON
                else
                    echo "[$SCRIPT_NAME] uninstalling  $YAST_THEME_DIR_PREFIX/$YAST_THEME_DIR/$ICONS_DIR/$DIR_22/$APPS_DIR/$ICON_FILE"
#                    echo "uninstalling  $YAST_THEME_DIR_PREFIX/$YAST_THEME_DIR/$ICONS_DIR/$DIR_22/$APPS_DIR/$ICON_FILE" 1>>$LOG_DIR_FILE
                    rm -f $YAST_THEME_DIR_PREFIX/$YAST_THEME_DIR/$ICONS_DIR/$DIR_22/$APPS_DIR/$DEST_ICON
                fi
                
                if [ "$MODE" = "install" ]
                then
                    echo "[$SCRIPT_NAME] installing  $YAST_THEME_DIR_PREFIX/$YAST_THEME_DIR/$ICONS_DIR/$DIR_32/$APPS_DIR/$ICON_FILE"
#                    echo "installing  $YAST_THEME_DIR_PREFIX/$YAST_THEME_DIR/$ICONS_DIR/$DIR_32/$APPS_DIR/$ICON_FILE" 1>>$LOG_DIR_FILE
                    if [ ! -d $YAST_THEME_DIR_PREFIX/$YAST_THEME_DIR/$ICONS_DIR/$DIR_32/$APPS_DIR ]
                    then
                        mkdir -p $YAST_THEME_DIR_PREFIX/$YAST_THEME_DIR/$ICONS_DIR/$DIR_32/$APPS_DIR
                    fi
                    cp -r $ICON_SOURCE/$SOURCE32_ICON $YAST_THEME_DIR_PREFIX/$YAST_THEME_DIR/$ICONS_DIR/$DIR_32/$APPS_DIR/$DEST_ICON
                else
                    echo "[$SCRIPT_NAME] uninstalling  $YAST_THEME_DIR_PREFIX/$YAST_THEME_DIR/$ICONS_DIR/$DIR_32/$APPS_DIR/$ICON_FILE"
#                    echo "uninstalling  $YAST_THEME_DIR_PREFIX/$YAST_THEME_DIR/$ICONS_DIR/$DIR_32/$APPS_DIR/$ICON_FILE" 1>>$LOG_DIR_FILE
                    rm -f $YAST_THEME_DIR_PREFIX/$YAST_THEME_DIR/$ICONS_DIR/$DIR_32/$APPS_DIR/$DEST_ICON
                fi
    
                if [ "$MODE" = "install" ]
                then
                    echo "[$SCRIPT_NAME] installing  $YAST_THEME_DIR_PREFIX/$YAST_THEME_DIR/$ICONS_DIR/$DIR_48/$APPS_DIR/$ICON_FILE"
#                    echo "installing  $YAST_THEME_DIR_PREFIX/$YAST_THEME_DIR/$ICONS_DIR/$DIR_48/$APPS_DIR/$ICON_FILE" 1>>$LOG_DIR_FILE
                    if [ ! -d $YAST_THEME_DIR_PREFIX/$YAST_THEME_DIR/$ICONS_DIR/$DIR_48/$APPS_DIR ]
                    then
                        mkdir -p $YAST_THEME_DIR_PREFIX/$YAST_THEME_DIR/$ICONS_DIR/$DIR_48/$APPS_DIR
                    fi
                    cp -r $ICON_SOURCE/$SOURCE48_ICON $YAST_THEME_DIR_PREFIX/$YAST_THEME_DIR/$ICONS_DIR/$DIR_48/$APPS_DIR/$DEST_ICON
                else
                    echo "[$SCRIPT_NAME] uninstalling  $YAST_THEME_DIR_PREFIX/$YAST_THEME_DIR/$ICONS_DIR/$DIR_48/$APPS_DIR/$ICON_FILE"
#                    echo "uninstalling  $YAST_THEME_DIR_PREFIX/$YAST_THEME_DIR/$ICONS_DIR/$DIR_48/$APPS_DIR/$ICON_FILE" 1>>$LOG_DIR_FILE
                    rm -f $YAST_THEME_DIR_PREFIX/$YAST_THEME_DIR/$ICONS_DIR/$DIR_48/$APPS_DIR/$DEST_ICON
                fi
            else
                if [ -z "$LAUNCHER" ]
                then
                    echo "[$SCRIPT_NAME] skip  $YAST_THEME_DIR_PREFIX/$YAST_THEME_DIR because it is not a directory"
                fi
#                echo "skip  $YAST_THEME_DIR_PREFIX/$YAST_THEME_DIR because it is not a directory" 1>>$LOG_DIR_FILE
            fi
        fi
    done
}    


#----------------------------------------------------------------------------
# the MAIN routine
#---------------------------------------------------------------------------

COPY_ICONS="no"
DELETE_ICONS="no"
YAST_THEME_DIR_PREFIX="/usr/share/YaST2/theme"
YAST_THEME_DIRS=`ls $YAST_THEME_DIR_PREFIX`
#LOG_DIR="/var/opt/novell/log/ncl"
#LOG_FILE="install_yast_icons.log"
#LOG_DIR_FILE="$LOG_DIR/$LOG_FILE"
DIR_22=22x22
DIR_32=32x32
DIR_48=48x48
ICON_SOURCE="/usr/share/pixmaps"
APPS_DIR="apps"
ICONS_DIR="icons"
ICON_FILE="CASA.png"

if [ -z "$1" ]
then
    MODE="install"
else
    MODE=$1
    if [ -z "$2" ]
    then
        LAUNCHER=""
    else
        LAUNCHER=$2
    fi
fi

echo ""
echo "[$SCRIPT_NAME] $SCRIPT_NAME v$VERSION"

#if [ ! -d $LOG_DIR ]
#then
#    mkdir -p $LOG_DIR
#fi
#echo "" 1>>$LOG_DIR_FILE
#echo "$SCRIPT_NAME v$VERSION - $DATE" 1>>$LOG_DIR_FILE
#echo "mode = <$MODE>" 1>>$LOG_DIR_FILE
#echo "launcher = <$LAUNCHER>" 1>>$LOG_DIR_FILE

# verify that a valid mode was entered
case "$MODE" in
    "install" | "uninstall" )
#    echo "<$MODE> is a valid mode" 1>>$LOG_DIR_FILE
    ;;

    "usage" | "help" | "-?" )
    echo ""
    echo "[$SCRIPT_NAME] usage:  $SCRIPT_NAME  [ install | uninstall | usage | help | -? ]"
    echo ""
#    echo "usage:  $SCRIPT_NAME  [ install | uninstall | usage | help | -? ]" 1>>$LOG_DIR_FILE
    exit 1
    ;;

    * )
    echo ""
    echo "[$SCRIPT_NAME] invalid mode: <$MODE>"
    echo "[$SCRIPT_NAME] usage:  $SCRIPT_NAME  [ install | uninstall | usage | help | -? ]"
    echo ""
#    echo "invalid mode: <$MODE>" 1>>$LOG_DIR_FILE
    exit 1
    ;;
esac

    
# verify that a valid launcher was entered
case "$LAUNCHER" in
    "YaST" | "rpm" )
#    echo "<$LAUNCHER> is a valid launcher" 1>>$LOG_DIR_FILE
    ;;

    * )
    if [ -n "$2" ]
    then
        echo ""
        echo "[$SCRIPT_NAME] invalid option: <$LAUNCHER>"
        echo "[$SCRIPT_NAME] usage:  $SCRIPT_NAME  [ install | uninstall | usage | help | -? ]"
        echo ""
#        echo "invalid launcher: <$LAUNCHER>" 1>>$LOG_DIR_FILE
        exit 1
    fi
    ;;
esac

    
# validate that the user running the script is root
ROOT_UID=0
#echo "User id = <$UID>" 1>>$LOG_DIR_FILE
if [ "$UID" -ne "$ROOT_UID" ]
then
    echo ""
    echo "[$SCRIPT_NAME] ERROR: You are not the root user."
    echo "[$SCRIPT_NAME] To install or uninstall the Novell Client for Linux"
    echo "[$SCRIPT_NAME] YaST icons you must login as the root user."
    echo ""
#    echo "ERROR: You are not the root user." 1>>$LOG_DIR_FILE
    exit 2
fi

# verifty that the icons can be installed
if [ "$MODE" = "install" ]
then
    determineIfSourceExists
fi

# verify that the icons need to be installed or uninstalled
if [ -z "$LAUNCHER" ]
then
    echo ""
    echo "[$SCRIPT_NAME] Determining if the Novell Client for Linux"
    if [ "$MODE" = "install" ]
    then
        echo "[$SCRIPT_NAME] YaST icons need to be installed."
    else
        echo "[$SCRIPT_NAME] YaST icons need to be uninstalled."
    fi
    echo "[$SCRIPT_NAME] Please wait..."
fi

if [ "$MODE" = "install" ]
then
    if [ "$LAUNCHER" = "YaST" ]
    then
        determineIfCopyDeleteRequired
    else
        COPY_ICONS="yes"
    fi
else
    determineIfCopyDeleteRequired
fi


# install or uninstall the icons
if [ "$MODE" = "install" ]
then
    if [ "$COPY_ICONS" = "yes" ]
    then
        if [ -n "$LAUNCHER" ]
        then
            CONTINUE="y"
        else        
            echo ""
            echo "[$SCRIPT_NAME] This script installs the Novell Client for Linux"
            echo "[$SCRIPT_NAME] YaST icons in all of the YaST theme directories."
            echo ""
            echo "[$SCRIPT_NAME] Are you sure you want to install the YaST icons? (y/n)"
            read CONTINUE
        fi
    else
        echo ""
        echo "[$SCRIPT_NAME] The Novell Client for Linux YaST icons are already installed"
        echo ""
#        echo "The Novell Client for Linux YaST icons are already installed" 1>>$LOG_DIR_FILE
        exit    
    fi
else
    if [ "$DELETE_ICONS" = "yes" ]
    then
        if [ -n "$LAUNCHER" ]
        then
            CONTINUE="y"
        else        
            echo ""
            echo "[$SCRIPT_NAME] This script uninstalls the Novell Client for Linux"
            echo "[$SCRIPT_NAME] YaST icons in all of the YaST theme directories."
            echo ""
            echo "[$SCRIPT_NAME] Are you sure you want to uninstall the YaST icons? (y/n)"
            read CONTINUE
        fi
    else
        echo ""
        echo "[$SCRIPT_NAME] The Novell Client for Linux YaST icons are already uninstalled"
        echo ""
#        echo "The Novell Client for Linux YaST icons are already uninstalled" 1>>$LOG_DIR_FILE
        exit            
    fi
fi

if [ "$CONTINUE" = "y" ]
then
    if [ "$MODE" = "install" ]
    then
        if [ -z "$LAUNCHER" ]
        then
            echo ""
            echo "[$SCRIPT_NAME] Installing Novell Client for Linux YaST icons"
            echo "[$SCRIPT_NAME] Please wait..."
        fi
        
        copyDeleteIcons
    
        if [ -z "$LAUNCHER" ]
        then
            echo ""
            echo "[$SCRIPT_NAME] Installation of the Novell Client for Linux"
            echo "[$SCRIPT_NAME] YaST icons completed"
            echo ""
        fi

#        echo "Installation of the Novell Client for Linux YaST icons completed" 1>>$LOG_DIR_FILE
        exit
    else
        if [ -z "$LAUNCHER" ]
        then
            echo ""
            echo "[$SCRIPT_NAME] Uninstalling Novell Client for Linux YaST icons"
            echo "[$SCRIPT_NAME] Please wait..."
        fi
        
        copyDeleteIcons
    
        if [ -z "$LAUNCHER" ]        
        then
            echo ""
            echo "[$SCRIPT_NAME] Uninstallation of the Novell Client for Linux"
            echo "[$SCRIPT_NAME] YaST icons completed"
            echo ""
        fi

#        echo "Uninstallation of the Novell Client for Linux YaST icons completed" 1>>$LOG_DIR_FILE
        exit
    fi
else
    if [ "$MODE" = "install" ]
    then
        if [ -z "$LAUNCHER" ]
        then
            echo ""
            echo "[$SCRIPT_NAME] Installation of the Novell Client for Linux"
            echo "[$SCRIPT_NAME] YaST icons cancelled"
            echo ""
        fi
        
#        echo "Installation of the Novell Client for Linux YaST icons cancelled" 1>>$LOG_DIR_FILE
        exit
    else
        if [ -z "$LAUNCHER" ]
        then
            echo ""
            echo "[$SCRIPT_NAME] Uninstallation of the Novell Client for Linux"
            echo "[$SCRIPT_NAME] YaST icons cancelled"
            echo ""
        fi

#        echo "Uninstallation of the Novell Client for Linux YaST icons cancelled" 1>>$LOG_DIR_FILE
        exit
    fi
fi
exit

