#!/bin/bash

#INSTALL_ROOT
#PACKAGE_ROOT

PLAT_VERSION_CONF=$INSTALL_ROOT/config/plat_version.conf

function get_ini()
{
	local conf=$1
	local sec=$2
	local key=$3

	$INSTALL_ROOT/bin/rwini -r -s "$sec" -k "$key" -f "$conf"
}

function set_ini()
{
	local conf=$1
	local sec=$2
	local key=$3
	local val=$4

	$INSTALL_ROOT/bin/rwini -w -s "$sec" -k "$key" -v "$val" -f "$conf"
}

function get_plat_version()
{
	local sec=$1
	local key=$2

	get_ini "$PLAT_VERSION_CONF" "$sec" "$key"
}

function set_plat_version()
{
	local sec=$1
	local key=$2
	local val=$3

	set_ini "$PLAT_VERSION_CONF" "$sec" "$key" "$val"
}

function get_release()
{
	local sec=$1
	local key=$2

	get_ini "$PACKAGE_ROOT/release" "$sec" "$key"
}

function get_extra_count()
{
	local val=`get_plat_version extra count`

	if [ -z "$val" ]; then
		echo -n 0
	else
		echo -n $val
	fi
}

function set_extra_count()
{
	local count=$1

	set_plat_version extra count $count
}

function copy_extra_tgz()
{
	local plat=$1
	local src=$PACKAGE_ROOT/$plat/extra.tgz

	if [ ! -f $src ]; then
		return
	fi

	local extra_dir=$INSTALL_ROOT/packages/$plat/extra
	mkdir -p $extra_dir

	local count=`ls -l $extra_dir | wc -l`
	local name=`get_release common name`
	local id=`get_release $name id`

	local dst=${count}_${name}_${id}.tgz

	cp -af $src $extra_dir/$dst
}

function update_history()
{
	local history_file=$INSTALL_ROOT/log/update_history
	echo -e "\n===============================================================================\n" >> $history_file
	echo -e "DATE: `date`\n" >> $history_file

	echo -e "PLAT_VERSION:" >> $history_file
	cat $PLAT_VERSION_CONF >> $history_file
	echo "" >> $history_file

	echo -e "PKG_RELEASE:" >> $history_file
	cat $PACKAGE_ROOT/release >> $history_file
	echo "" >> $history_file
}

function update_version()
{
	local name=`get_release common name`
	local id=`get_release $name id`
	local mode=`get_release $name mode`
	local title=`get_release $name title`
	local credits=`get_release $name credits`
	local build_date=`get_release common date`
	local update_date=`date "+%Y%m%d%H%M%S"`

	local extra_count=`get_extra_count`
	let extra_count=extra_count+1

	local sec=extra_${extra_count}
	set_plat_version $sec name $name
	set_plat_version $sec id $id
	set_plat_version $sec mode $mode
	set_plat_version $sec title $title
	set_plat_version $sec credits $credits
	set_plat_version $sec build_date $build_date
	set_plat_version $sec update_date $update_date

	set_extra_count $extra_count
}

function deploy()
{
	local module=$1

	if [ ! -d $PACKAGE_ROOT/$module ]; then
		return
	fi

	$INSTALL_ROOT/bin/lloader $INSTALL_ROOT/lmodules/manager_deploy_local.lua \
		$module $PACKAGE_ROOT/$module
	if [ $? -ne 0 ]; then
		echo "Deploy $module failed"
	else
		echo "Deploy $module OK"
	fi
}

$INSTALL_ROOT/bin/eps_services stop

deploy manager

copy_extra_tgz agent
copy_extra_tgz agent_32
copy_extra_tgz agent_win
copy_extra_tgz agent_win32
copy_extra_tgz manager

update_history
update_version

$INSTALL_ROOT/bin/eps_services_ctrl restart

exit 0
