#!/bin/sh

ME=$(basename $0)

if [ $# -lt 1 ] || [ $# -gt 2 ] ; then
    echo "usage: $ME <repository-name> [search-path]" 1>&2
    exit 1;
fi

REPO=$1
LINUX_SRC_PATH=$2

if [ X"${LINUX_SRC_PATH}" != X ] ; then
    echo "$ME: Searching \`${LINUX_SRC_PATH}' for $REPO" 1>&2
    IFS_saved="$IFS"
    IFS=:
    for i in $LINUX_SRC_PATH ; do
	# Ignore current directory since we will almost certainly find
	# the target directory there which breaks updating (there's no
	# point updating from yourself!).
	if [ X"." = X"${i}" ] ; then
	    echo "$ME: Ignoring \`.'" 1>&2
	    continue
	fi

	if [ -d "$i/$REPO/.hg" ] ; then
	    echo "$ME: Found $i/$REPO" 1>&2
	    echo "$i/$REPO"
	    exit 0
	fi
    done
    IFS="$IFS_saved"
fi

XEN=$(hg -R ${XEN_ROOT} path default)
if [ $? -ne 0 ] || [ X"$XEN" = "X" ] ; then
    echo "$ME: Unable to determine Xen repository parent." 1>&2
    exit 1;
fi

BASE=$(dirname ${XEN})
if [ $? -ne 0 ] || [ X"$BASE" = "X" ] ; then
    echo "$ME: Unable to determine Xen repository base." 1>&2
    exit 1;
fi
if [ -d "$XEN" ] && [ ! -d "$BASE/$REPO" ] ; then
    echo "$ME: No such dir: $BASE/$REPO" 1>&2
    exit 1
fi

echo "$ME: Found ${BASE}/${REPO}" 1>&2

# If ${BASE}/${REPO} is a local directory then prepend file:// so that
# the test in src.hg-clone will fail and we will clone instead of
# linking this repository. We only want to link repositories which
# were found via LINUX_SRC_PATH.
if [ -d "${BASE}/${REPO}" ] ; then
    echo "file://${BASE}/${REPO}"
else
    echo ${BASE}/${REPO}
fi
exit 0
