#!/bin/sh
LANG=C
get_package_info()
{
	PACKAGE=`echo $FROMLOG | awk '{print $6}'\; | sed "s/(^*//;s/)$//" | awk -F:: '{print $1 " " $2}'\;`
	PACKAGE_NAME=`echo $PACKAGE | awk -F/ '{print $2}'\;`
	PACKAGE_GROUP=`echo $PACKAGE | awk -F/ '{print $1}'\;`
}

what_to_do()
{
	WHAT_TO_DO=`echo $FROMLOG | awk '{print $5}'\;`
}

emerge_progress()
{
	EMERGE_PROGRESS_CUR=`echo $FROMLOG | awk '{print $2}'\; | sed "s/(//"`
	EMERGE_PROGRESS_TOT=`echo $FROMLOG | awk '{print $4}'\; | sed "s/)//"`
}

percent_status()
{
	TOT=`find /var/tmp/portage/$PACKAGE_NAME -iname "*.c" -or -iname "*.cpp" -or -iname "*.cc" | wc -l`
	PROG=`find /var/tmp/portage/$PACKAGE_NAME -iname "*.o" | wc -l`
	if [ $TOT == 0 ]
	then
		clear
		echo -n "Emerge is reporting that work is being done on $PACKAGE_GROUP/$PACKAGE_NAME.."
		main
	fi

PER=$(bc -l << EOF
scale = 4 
a = ( $PROG )
b = ( $TOT )
c = ( 100 )
a / b * c
EOF
)
#	PER=`echo $PER | sed "s/\./,/"`
	PER=$(printf "%1.2f" $PER)
	
}

fromlog()
{

FROMLOG=`tail -n2 /var/log/emerge.log | grep "===\\|completed" | grep "Cleaning\\|Compiling\\|emerge" | grep -v "Post-Build Cleaning" | awk -F: '{print $2}'\; | tail -n1`

}

main()
{
sleep 10
run
}

run()
{
fromlog
if [ "$FROMLOG" = "" ]
then
	clear
	echo -n "Nothing is being done.."
	main
else
	what_to_do
	get_package_info
	emerge_progress
	percent_status
	clear

	echo -n "Status		: "
	echo "$WHAT_TO_DO"
	
	echo -n "Package		: "
	echo -n $PACKAGE_GROUP
	echo -n "/"
	echo $PACKAGE_NAME

	if [ "$WHAT_TO_DO" = "Compiling/Merging" ]
	then
		echo -n "Progress	: "
		echo "("$PER"%)"
	fi
	
	echo -n "Total progress	: "
	echo "Package "$EMERGE_PROGRESS_CUR of $EMERGE_PROGRESS_TOT
	main
fi

}
echo "Gathering info.."
run
main # do main loop
