#!/bin/bash

# Gentoo Helper script written by Albert Zeyer
# look at: http://www.az2000.de/projects/gentoo_helpers

if [ "$1" == "" ]; then
	echo "usage: $0 PACKAGE"
	exit
fi

source /etc/make.conf
PORTAGE_DIRS="/usr/portage $PORTDIR_OVERLAY"

keywordsfile=/etc/portage/package.keywords
[ -d $keywordsfile ] && keywordsfile=$keywordsfile/main.keywords

arch=""
for parch in /usr/portage/profiles/default-linux/* /usr/portage/profiles/default/linux/*; do
	if [ "$(readlink /etc/make.profile | grep $parch )" != "" ]; then
		arch=$(expr $parch : '.*/\(.*\)' '|' $parch)
		break
	fi
done
if [ "$arch" == "" ]; then
	echo "sorry, I can't determinate, which architecture you are running"
	echo "your /etc/make.profile points to: $(readlink /etc/make.profile)"
	exit
fi

first_pak=1
while true; do
	# get disturbing package (with version-nr)
	package=$(emerge -pv $* | grep -m 1 ~$arch | cut -d" " -f2)

	if [ "$package" != "" ]; then
		# cut it into section and shortname
		package_sect=$(echo $package | cut -d"/" -f1)
		package=$(echo $package | cut -d"/" -f2)

		# search the ending of version-nr
		i=10
		loop_again=true;
		while $loop_again; do
			package=$(echo $package | cut -d"-" -f"-$i")
			i=$(expr $i - 1)

			for pdir in $PORTAGE_DIRS; do
				if [ -d $pdir/$package_sect/$package ]; then
					loop_again=false;
				fi
			done
		done

		package=$(echo $package_sect/$package)

		if [ $first_pak == 1 ]; then
			echo "" >> $keywordsfile
			echo "# autogenerated list for $*" >> $keywordsfile
			first_pak=0
		fi
		echo "> adding ~$arch for $package"
		echo "$package ~$arch" >> $keywordsfile

	else # "$package" == ""
		if [ $first_pak == 1 ]; then
			echo "> NOTE: no need for adding a keyword"
		fi
		echo ">>> last status"
		emerge -pv $*
		exit
	fi
done


