#!/bin/sh

KEYDIR="/etc/portage"
KEYFILE="package.keywords"

function usage() 
{
    echo "Usage: $(basename ${0}) [OPTIONS] <category/package>"
    echo "This script will remove the package from ${KEYDIR}/${KEYFILE}"
    echo "Examples:"
    echo -ne "\t$(basename ${0}) net-misc/dhcp\n"
    echo -ne "\t$(basename ${0}) net-misc/dhcp-3.0.3-r1\n"
    echo -ne "\t$(basename ${0}) =net-misc/dhcp-3.0.3-r1\n"
    echo
    echo "Options:"
    echo -ne "\t-p\t\tSimulate but do not write file\n"
    echo
    echo "Not specifying a fully qualified package atom will remove all"
    echo "occurrences of <category/package> from ${KEYFILE}."
    echo "You have been warned."
    exit 1
}

# Command Line Check
if [ $# -lt 1 ] || [ $# -gt 2 ]
then
    usage
fi

# Process Command Line
if [ $# -eq 2 ]
then
    if [ ${1} == "-p" ]
    then
	EXEC=""
	ATOM=${2}
    elif [ ${2} == "-p" ]
    then
	EXEC=""
	ATOM=${1}
    else
	usage
    fi
else
    EXEC=""
    ATOM=${1}
fi
    
# Determine which Regexp to use
if [ $(expr ${ATOM} : '.*[a-z\+]-\([0-9\.]*[\*a-z]*[-r]*[0-9]*\)$' ) ]
then
    REGEXP="^[=]*${ATOM/=/}"
else 
    REGEXP="^[=]*${ATOM}.*"
fi
REGEXP=${REGEXP/\//\\/}

if [ -w ${KEYDIR}/${KEYFILE} ]
then
    ZAPPED=$(grep ${ATOM} "${KEYDIR}/${KEYFILE}")
    if [ ! -z "${ZAPPED}" ]
    then
	sed -e 's/'"${REGEXP}"'//;/./!d' ${EXEC} "${KEYDIR}/${KEYFILE}"
	for each in ${ZAPPED}
	do
	    echo "Removed ${each} from ${KEYDIR}/${KEYFILE}."
	done
    else
	echo "${ATOM} isn't in ${KEYFILE}" 1>&2
	exit 1
    fi
else
    echo "${KEYDIR}/${KEYFILE} is not writeable, goodbye." 1>&2
    exit 1
fi
exit 0
