#!/bin/bash
#
# @echo off
#
# Parse the Bug List output file (ID State Result Component)
#
# Parameters:
#
# arg1 - pathname of file with the Bug List

# Includes

. common
. settings

# ID State Result Component
#
# State:=[NEW|RESO|CLOS|ASSI|REJE|NEED]
# Result:=[CODE|PATC|DOCU|FIXE|INVA]
#
#      State entries:
#
# NEW  == NEW
# RESO == RESOLVED
# CLOS == CLOSED
# ASSI == ASSIGNED 
# REJE == REJECTED
# NEED == NEEDINFO
#
#      Result entries:
#
# FIXE == FIXED
# INVA == INVALID
# CODE == CODE_FIX 
# PATC == PATCH_ALREADY_AVAILABLE 
# DOCU == DOCUMENTED

get_summary()
{
#	echo "=====================$s0:$s1:$s2:$s3:$s4:$s5:$line"

	ID="$s0"
	State="$s1"
	Result=
	Component=

	if [ "$State" == RESO\
		-o "$State" == CLOS\
		-o "$State" == REJE ]; then
		Result="$s2"
		if [ "x$s4" == x ]; then
			Component="$s3"
		else
			Component="$s3 $s4"
		fi
	else
		if [ "$State" != NEW\
			-a "$State" != NEED\
			-a "$State" != ASSI ]; then
			echo "ERROR 0: get_summary, <$State>"
			CountERR=$[ $CountERR + 1 ]
		else
			if [ "x$s3" == x ]; then
				Component="$s2"
			else
				Component="$s2 $s3"
			fi
		fi
	fi

	echo "$ID:$State: Exp $Result:$Component:"
}

# arg1 - pathname of file with the Bug List
do_summary()
{
	started=

	OLD_IFS=$IFS
	IFS=" "

	cat "$1" |\
	while [ 1 ]
	do
		read s0 s1 s2 s3 s4 s5 line
		if [ $? -ne 0 ] ; then
#			echo "Number of the table inconsistency errors: CountERR = $CountERR"
			if [ "$CountERR" != 0 ]; then
				return 1
			fi
			break
		fi

		if [ "$s1" == bugs -a "$s2" == "found." ]; then
			if [ "$started" == yes ]; then
				started=no
			else
				started=yes
			fi
		elif [ "$started" == yes ]; then
			get_summary
		fi
	done

	ret=$?

	IFS=$OLD_IFS

	if [ $ret -ne 0 ]; then
		return 1
	fi
}

# ############################## MAIN ###############################

PATHNAME="$1"
UTILSTATUS=0
SUMMARY=
CountERR=0

# echo "Parse the Bug List output file:"
# echo "   $PATHNAME"

if [ ! -f "$PATHNAME" ]; then
	do_exit 1 "It is not file: <$PATHNAME>"
fi

do_summary "$PATHNAME"
if [ $? -ne 0 ]; then
	do_exit 1 "parsebuglist failed"
else
	exit 0
fi

