#!/bin/sh

echo "This script will update your shell profile when the 'bin' directory"
echo "of python is not early enough of the PATH of your shell."
echo "These changes will be effective only in shell windows that you open"
echo "after running this script."

PYVER=@PYVER@
PYTHON_ROOT="/Library/Frameworks/Python.framework/Versions/@PYVER@"

if [ `id -ur` = 0 ]; then
	# Run from the installer, do some trickery to fetch the information
	# we need.
	theShell="`finger $USER | grep Shell: | head  -1 | awk '{ print $NF }'`"

else
	theShell="${SHELL}"
fi

# Make sure the directory ${PYTHON_ROOT}/bin is on the users PATH.
BSH="`basename "${theShell}"`"
case "${BSH}" in
bash|ksh|sh|*csh)
	if [ `id -ur` = 0 ]; then
		P=`su - ${USER} -c 'echo A-X-4-X@@$PATH@@X-4-X-A' | grep 'A-X-4-X@@.*@@X-4-X-A' | sed -e 's/^A-X-4-X@@//g' -e 's/@@X-4-X-A$//g'`
	else
		P="`(exec -l ${theShell} -c 'echo $PATH')`"
	fi
	;;
*)
	echo "Sorry, I don't know how to patch $BSH shells"
	exit 0
	;;
esac

# Now ensure that our bin directory is on $P and before /usr/bin at that
for elem in `echo $P | tr ':' ' '`
do
	if [ "${elem}" = "${PYTHON_ROOT}/bin" ]; then
		echo "All right, you're a python lover already"
		exit 0
	elif [ "${elem}" = "/usr/bin" ]; then
		break
	fi
done

echo "${PYTHON_ROOT}/bin is not on your PATH or at least not early enough"
case "${BSH}" in
*csh)
	if [ -f "${HOME}/.tcshrc" ]; then
		RC="${HOME}/.tcshrc"
	else
		RC="${HOME}/.cshrc"
	fi
	# Create backup copy before patching
	if [ -f "${RC}" ]; then
		cp -fp "${RC}" "${RC}.pysave"
	fi
	echo "" >> "${RC}"
	echo "# Setting PATH for Python ${PYVER}" >> "${RC}"
	echo "# The orginal version is saved in .cshrc.pysave" >> "${RC}"
	echo "set path=(${PYTHON_ROOT}/bin "'$path'")" >> "${RC}"
	if [ `id -ur` = 0 ]; then
		chown "${USER}" "${RC}"
	fi
	exit 0
	;;
bash)
	if [ -e "${HOME}/.bash_profile" ]; then
		PR="${HOME}/.bash_profile"
	elif [ -e "${HOME}/.bash_login" ]; then
		PR="${HOME}/.bash_login"
	elif [ -e "${HOME}/.profile" ]; then
		PR="${HOME}/.profile"
	else
		PR="${HOME}/.bash_profile"
	fi
	;;
*sh)
	PR="${HOME}/.profile"
	;;
esac

# Create backup copy before patching
if [ -f "${PR}" ]; then
	cp -fp "${PR}" "${PR}.pysave"
fi
echo "" >> "${PR}"
echo "# Setting PATH for Python ${PYVER}" >> "${PR}"
echo "# The orginal version is saved in `basename ${PR}`.pysave" >> "${PR}"
echo 'PATH="'"${PYTHON_ROOT}/bin"':${PATH}"' >> "${PR}"
echo 'export PATH' >> "${PR}"
if [ `id -ur` = 0 ]; then
	chown "${USER}" "${PR}"
fi
exit 0
