#!/bin/bash

INSTALLER_BIT=$$$$__INSTALLER_BIT__$$$$
ORI_FILE_md5sum=$$$$__CHKSUM_REPLACE__$$$$
ORI_FILE_LEN=$$$$__FILE_LENGTH_REPLACE__$$$$

TPUT="`which tput`"
if test -t 0 -a -t 1 -a -n "$TPUT"; then
        CI="`$TPUT setf 6 || true`"; CE="`$TPUT setf 4 || true`"
        CX="`$TPUT setf 2 || true`"; CN="`$TPUT sgr0 || true`"
else    CI=''; CE=''; CX=''; CN=''
fi

###### Get system information ######
AVAIL_SPACE=`df -k . | tail -n -1 |  awk '{if ( $4 ~ /%/) { print $3 } else { print $4 } }'`
DISPLAY_MODE=$DISPLAY

OS_BLOCKSIZE=`df -k . |head -n 1 | awk '{if ( $4 ~ /%/) { print $1 } else { print $2 } }'`
OS_BIT=`getconf LONG_BIT`
if [ -e /etc/os-release ]; then
	OS_NAME=`cat /etc/os-release | grep ID | head -n 1 | awk -F= '{print $2}'`
	OS_VERSION=`cat /etc/os-release | grep VERSION_ID | sed 's/\"//g' | awk -F= '{print $2}'`
elif [ -e /etc/lsb-release ]; then
	OS_NAME=`cat /etc/lsb-release | grep DISTRIB_ID | head -n 1 | awk -F= '{print $2}'`
	OS_VERSION=`cat /etc/lsb-release | grep DISTRIB_RELEASE | sed 's/\"//g' | awk -F= '{print $2}'`
else
	echo "${CE} Cannot find system information(No /etc/os-release, /etc/lsb-release). ${CN}"
	exit 1
fi

###### Set SDK Installer bit ######
INSTALLER_BIT_FLAG=`echo ${INSTALLER_BIT} 2>&1 | egrep -e 64`
if [ -z "${INSTALLER_BIT_FLAG}" ]; then
	INSTALLER_BIT=32
else
	INSTALLER_BIT=64
fi

###### Check SDK Installer bit ######
if [ ${INSTALLER_BIT} != ${OS_BIT} ]; then
	echo "${CE} Cannot execute the SDK Installer because of bit difference. ${CN}"
	echo "${CE} You must use SDK Installer which is same as OS bit. ${CN}"
	echo "${CE} Current OS bit : ${OS_BIT} ${CN}"
	echo "${CE} Current SDK Installer bit : ${INSTALLER_BIT} ${CN}"
	exit 1
fi

###### Set java bit ######
JAVA_VERSION=$(java -version 2>&1 | awk -F '"' '/version/ {print $2}')
JAVA_BIT_FLAG=$(java -version 2>&1 | egrep -e 64-Bit)
if [ -z "${JAVA_BIT_FLAG}" ]; then
	JAVA_BIT=32
else
	JAVA_BIT=64
fi
####################################

#### Init Environment Variables ####
CUR_DIR=`pwd`
MYTIMESTAMP=`date +"%Y%m%d%H%M%S"`
#OUT_PATH="/tmp/tizensdk_${MYTIMESTAMP}"
OUT_PATH="$HOME/.package-manager/run/tizensdk_${MYTIMESTAMP}"

# list for pre installation check. Write including 'space'
if [ "Ubuntu" = "${OS_NAME}" ] ; then
	OS_NAME="ubuntu"
fi
if [ "ubuntu" = "${OS_NAME}" ] ; then
	INSTALLATION_CHECK="grep zip"
elif [ "fedora" = "${OS_NAME}" ]; then
	INSTALLATION_CHECK="procps-ng gettext dbus-libs libcurl expect gtk2 grep zip make libgnome qemu-user webkitgtk libpng12"
elif [ "tizen" = "${OS_NAME}" ] ; then
	INSTALLATION_CHECK="procps-ng gettext-tools libdbus libcurl expect libgtk2 grep zip make libgnome2 qemu-linux-user libwebkitgtk2"
fi
pkg_list=""

# ubuntu version 10.x and 11.x and 12.x and 32bit
if [ "ubuntu" = "${OS_NAME}" ] ; then	
	NVIDIA_CHECK=`lspci | grep nVidia`
	MESA_CHECK=`dpkg -l | egrep -e libgl1-mesa-glx' '`
fi
####################################

## check the available space ##
## kmk - 2015-02-09 : remove check the avaliable space.
#if [ $AVAIL_SPACE -lt 5452596 ]; then
#	echo "${CE} Available blocks: $AVAIL_SPACE($OS_BLOCKSIZE)    Needed blocks: about 5.2GB "
#	echo " Please free up the required Disk Space and try again. $CN"
#	exit 1
#fi

## check the root user ##
if [ `whoami` = "root" ] ; then
	echo "${CE} Do not install as 'root' user or 'su' commands. ${CN}"
	exit 1
fi

## check the java installation ##
if [ -z "${JAVA_VERSION}" ] ; then
	echo "Java Development Kit (JDK) was not found on your computer."
        echo "To use the Tizen SDK, you need to install the JDK 7 or later." 
	echo "Please go to http://www.oracle.com/technetwork/java/javase/downloads and download a JDK."
	exit 1
fi


## check the default java as OpenJDK ##
#if [ "ubuntu" = "${OS_NAME}" ] ; then
#	CHECK_OPENJDK=`java -version 2>&1 | egrep -e OpenJDK`
#	if [ -n "${CHECK_OPENJDK}" ] ; then
#		echo "${CE} OpenJDK is not supported. Try again with Oracle JDK. ${CN}"
#		exit 1
#	fi
#fi

## check the pre installation packages ##
for INPUT_PKG_NAME in ${INSTALLATION_CHECK}
do
        if [ "ubuntu" = "${OS_NAME}" ] ; then
                CHECK_FLAG=`dpkg -l ${INPUT_PKG_NAME} 2>/dev/null | grep -e "^ii"`
        elif [ "fedora" = "${OS_NAME}" ] || [ "tizen" = "${OS_NAME}" ] ; then
                CHECK_FLAG=`rpm -qi ${INPUT_PKG_NAME} 2>/dev/null | grep Name`
        fi
        if [ -z "${CHECK_FLAG}" ] ; then
                pkg_list="${pkg_list}\"${INPUT_PKG_NAME}\" "
        fi
done
if [ -n "$pkg_list" ] ; then
	echo "${CN} If you want to install TIZEN-SDK, you must install${CE} ${pkg_list} ${CN}package(s)."
	exit 1
fi

# platform bit and jdk bit equality is checked.
if [ ${OS_BIT} != ${JAVA_BIT} ]; then
	echo "The bit of java is different from the bit of your OS."
	exit 1
fi

## check the mesa driver for emulator ##
if [ "ubuntu" = "${OS_NAME}" ] ; then
	if [ "10.10" = ${OS_VERSION} ] && [ -n "${NVIDIA_CHECK}" ] && [ -z "${MESA_CHECK}" ] ; then
		echo "We recommend that you use the Mesa OpenGL implementation in Ubuntu 10.10 and nVidia enviroment."
		echo "Please install${CE} libgl1-mesa-glx ${CN}package."
		exit 1
	fi
fi

mkdir -p ${OUT_PATH}
cd ${CUR_DIR}
tail -n +"${ORI_FILE_LEN}" "$0" | tee >(md5sum>${OUT_PATH}/checksum) | tar xmz -C ${OUT_PATH}/

OUT_FILE_md5sum=`cat "$OUT_PATH/checksum" | awk '{ print $1 }'`
if [ "${OUT_FILE_md5sum}" != "${ORI_FILE_md5sum}" ]; then
	echo "$CE The download file appears to be corrupted. "
	echo " Please do not attempt to install this archive file. $CN"
	rm -rf ${OUT_PATH}
	exit 1
fi
## Get Script Path

##Excute InstallManager
pushd . > /dev/null
SCRIPT_PATH="${BASH_SOURCE[0]}";
  while([ -h "${SCRIPT_PATH}" ]) do
    cd "`dirname "${SCRIPT_PATH}"`"
    SCRIPT_PATH="$(readlink "`basename "${SCRIPT_PATH}"`")";
  done
cd "`dirname "${SCRIPT_PATH}"`" > /dev/null
SCRIPT_PATH="`pwd`";
popd  > /dev/null

##Set environment using GTK3
export SWT_GTK3=1

cd $OUT_PATH
./installer.sh -path "$SCRIPT_PATH" "${@}"

##source bashrc
source ${HOME}/.bashrc

exit 0
