#!/bin/sh

if [ "x$MSYSTEM" = "xmsys" ] ; then
  PATH_SEPARATOR=";"
else
  PATH_SEPARATOR=":"
fi

# Poor man's (portable) 'dirname' command.
dirpart()
{
   expr "$1" : '\(..*\)[/\\].*'
}

BASE_DIR=`dirpart $0`
TEMP_PREFIX=/tmp/cs-config$$

# Collect executables starting with 'cs-config-' from $CRYSTAL and $PATH
# @@@ FIXME: What about $CRYSTAL_x_y env vars?
OLD_IFS="$IFS"
IFS=$PATH_SEPARATOR
for p in $CRYSTAL$PATH_SEPARATOR$CRYSTAL/bin$PATH_SEPARATOR$BASE_DIR$PATH_SEPARATOR$PATH ; do
  if [ -d "$p" ] ; then
    for s in "$p"/cs-config-* ; do
      if [ -x "$s" ] ; then
	echo "$s" >> ${TEMP_PREFIX}_find
      fi
    done
  fi
done
IFS="$OLD_IFS"

if [ ! -e ${TEMP_PREFIX}_find ] ; then
  echo "No cs-config-* scripts found" >&2
  exit -1
fi

# Reorder for sorting
cat ${TEMP_PREFIX}_find | sed 's!\(.*\)/cs-config-\(.*\)\.\(.*\)!\2:\3:\1!g' >> ${TEMP_PREFIX}_split
# Sort by version number
cat ${TEMP_PREFIX}_split | sort -u -t : -k 1,1nr -k 2,2nr >> ${TEMP_PREFIX}_sorted
# Extract first entry (highest version)
command=`cat ${TEMP_PREFIX}_sorted | head -n 1 | sed 's!\(.*\):\(.*\):\(.*\)!\3/cs-config-\1\.\2!'`
# cleanup
rm ${TEMP_PREFIX}*
# ...and execute.
$command $@


