# Example setup file for ConTeXt distribution
#
# Author:  Hans Hagen
# Patches: Arthur R. & Mojca M.
#
# Usage:
#   . setuptex [texroot]
#
# On the first run also execute:
#   mktexlsr
#   texexec --make --alone

#
# PLATFORM
#

# we will try to guess the platform first
# (needs to be kept in sync with first-setup.sh and mtxrun)
# if yours is missing, let us know

system=`uname -s`
cpu=`uname -m`

case "$system" in
	# linux
	Linux)
		case "$cpu" in
			i*86) platform="linux" ;;
			x86_64|ia64) platform="linux-64" ;;
			# a little bit of cheating with ppc64 (won't work on Gentoo)
			ppc|ppc64) platform="linux-ppc" ;;
			*) platform="unknown" ;;
		esac ;;
	# Mac OS X
	Darwin)
		case "$cpu" in
			i*86) platform="osx-intel" ;;
			x86_64) platform="osx-64" ;;
			ppc*|powerpc|power*|Power*) platform="osx-ppc" ;;
			*) platform="unknown" ;;
		esac ;;
	# FreeBSD
	FreeBSD|freebsd)
		case "$cpu" in
			i*86) platform="freebsd" ;;
			x86_64) platform="freebsd" ;;
			amd64) platform="freebsd-amd64" ;;
			*) platform="unknown" ;;
		esac ;;
	# kFreeBSD (Debian)
	GNU/kFreeBSD)
		case "$cpu" in
			i*86) platform="kfreebsd-i386" ;;
			x86_64|amd64) platform="kfreebsd-amd64" ;;
			*) platform="unknown" ;;
		esac ;;
	# cygwin
	CYGWIN)
		case "$cpu" in
			i*86) platform="cygwin" ;;
			x86_64|ia64) platform="cygwin-64" ;;
			*) platform="unknown" ;;
		esac ;;
	# SunOS/Solaris
	SunOS)
		case "$cpu" in
			sparc) platform="solaris-sparc" ;;
			i86pc) platform="solaris-intel" ;;
			*) platform="unknown" ;;
		esac ;;
	*) platform="unknown"
esac

# temporary fix for Snow Leopard
if test "$platform" = "osx-intel"; then
	# running Snow Leopard or later
	if test `uname -r|cut -f1 -d"."` -ge 10 ; then
		# working on 64-bit hardware
		if test `sysctl -n hw.cpu64bit_capable` = 1; then
			platform="osx-64"
		fi
	fi
fi

if test "$platform" = "unknown" ; then
	echo "Error: your system \"$system $cpu\" is not supported yet."
	echo "Please report to the ConTeXt mailing-list (ntg-context@ntg.nl)"
fi

#
# PATH
#

# this resolves to path of the setuptex script
# We use $0 for determine the path to the script, except for:
# * bash where $0 always is bash; here we use BASH_SOURCE
# * ksh93 where we use ${.sh.file}
# Thanks to Vasile Gaburici and Alessandro Perucchi for reporting this
# * http://www.ntg.nl/pipermail/ntg-context/2008/033953.html
# * http://www.ntg.nl/pipermail/ntg-context/2012/068658.html
if [ z"$BASH_SOURCE" != z ]; then
	SCRIPTPATH="$BASH_SOURCE"
elif [ z"$KSH_VERSION" != z ]; then
   	SCRIPTPATH="${.sh.file}"
else
	SCRIPTPATH="$0"
fi

OWNPATH=$(cd -P -- "$(dirname -- "$SCRIPTPATH")" && pwd -P)

# but one can also call
# . setuptex path-to-tree

TEXROOT=""
# first check if any path has been provided in the argument, and try to use that one
if [ $# -ne 0 ] ; then
	# TODO: resolve any errors
	ARGPATH=$(cd -P -- "$(dirname -- "$1")" && pwd -P) && ARGPATH=$ARGPATH/$(basename -- "$1")
	if test -f "$ARGPATH/texmf/tex/plain/base/plain.tex" ; then
		if [ -d "$ARGPATH/texmf-$platform/bin" ]; then
			TEXROOT="$ARGPATH"
		else
			echo "Binaries for platform '$platform' are missing."
			echo "(There is no folder \"$ARGPATH/texmf-$platform/bin\")"
		fi
	else
		echo "The argument \"$ARGPATH\" is not a valid TEXROOT path."
		echo "(There is no file \"$ARGPATH/texmf/tex/plain/base/plain.tex\")"

		if [ -f "$OWNPATH/texmf/tex/plain/base/plain.tex" ]; then
			TEXROOT="$OWNPATH"
		fi
	fi
else
	if [ -f "$OWNPATH/texmf/tex/plain/base/plain.tex" ]; then
		if [ -d "$OWNPATH/texmf-$platform/bin" ]; then
			TEXROOT="$OWNPATH"
		else
			echo "Binaries for platform '$platform' are missing."
			echo "(There is no folder \"$OWNPATH/texmf-$platform/bin\")"
		fi
	else
		echo "\"$OWNPATH\" is not a valid TEXROOT path."
		echo "(There is no file \"$OWNPATH/texmf/tex/plain/base/plain.tex\")"
	fi
fi

if [ "$TEXROOT" != "" ]; then
	# for Alan Braslau's server :)
	if [ "x$PS1" != "x" ] ; then
		echo "Setting \"$TEXROOT\" as ConTeXt root."
	fi

# ConTeXt binaries have to be added to PATH
TEXMFOS=$TEXROOT/texmf-$platform
export PATH=$TEXMFOS/bin:$PATH

# unset variables that won't be used lately
unset platform cpu system OWNPATH SCRIPTPATH ARGPATH TEXMFOS

# not sure why this would be needed
# export CTXMINIMAL=yes

else
	echo "provide a proper tex root (like '. setuptex /something/tex')" ;
fi

