#!/bin/sh
#
# Check group file and qa scripts for a specific pcp command ($1)
#
# $1 is assumed to be _both_ the name of a command that appears in
# the QA scripts (or part of a command, e.g. purify in _setup_purify)
# and the name of a group in the group file
#

tmp=/var/tmp/$$
trap "rm -f $tmp.*; exit 0" 0 1 2 3 15

if [ $# -ne 1 ]
then
    echo "Usage: $0 pcp-app"
    exit 1
fi

touch $tmp.tmp
for seq in [0-9][0-9][0-9] [0-9][0-9][0-9][0-9]
do
    if grep -q "^$seq[: 	]" group
    then
	:
    else
	echo "$seq: Error: file exists but missing from group"
    fi
    # special control lines
    # check-group-include: group ..
    # check-group-exclude: group ..
    grep '# check-group-' $seq >$tmp.chk
    if [ -s $tmp.chk ]
    then
	if egrep "check-group-include:.* $1( |\$)" <$tmp.chk >/dev/null
	then
	    #debug# echo "$seq: explicit include"
	    echo $seq >>$tmp.tmp
	    continue
	fi
	if egrep "check-group-exclude:.* $1( |\$)" <$tmp.chk >/dev/null
	then
	    #debug# echo "$seq: explicit exclude"
	    continue
	fi
    fi

    # need to handle some alias cases ...
    #
    case "$1"
    in
	pmclient)	# executable might be pmlient_fg
	    ( grep -v '^#' $seq \
	      | egrep -q "(^(pmclient|pmclient_fg)([ '\"]|$))|([ /'\"_=](pmclient|pmclient_fg)([ '\"_]|$))" \
	    ) && echo $seq >>$tmp.tmp
	    ;;

	*)
	    ( grep -v '^#' $seq \
	      | egrep -q "(^$1([ '\"]|$))|([ /'\"_=]$1([ '\"_]|$))" \
	    ) && echo $seq >>$tmp.tmp
	    ;;
    esac
done

sed <group -e '/^$/d' -e '/^[^0-9]/d' -e 's/[: 	].*//' \
| while read seq
do
    [ -f "$seq" ] && continue
    echo "$seq: Error: in group but file not found"
done

sort -o $tmp.scripts $tmp.tmp

check -r -n -g "$1" | sort \
| while read f
do
    [ -f "$f" ] && echo "$f"
done >$tmp.group

comm -23 $tmp.scripts $tmp.group >$tmp.tmp
if [ -s $tmp.tmp ]
then
    echo "$1 in QA scripts and NOT in group ..."
    sort -n $tmp.tmp | sed -e 's/^/    /'
    echo
fi

comm -13 $tmp.scripts $tmp.group >$tmp.tmp
if [ -s $tmp.tmp ]
then
    echo "$1 in group and NOT in QA scripts ..."
    sort -n $tmp.tmp | sed -e 's/^/    /'
fi

comm -12 $tmp.scripts $tmp.group >$tmp.tmp
echo "$1 in group and QA scripts `wc -l <$tmp.tmp | sed -e 's/ //g'` times"
