############################
+function whichable()
+{
+ to_find="$1"; shift
+ which which &>/dev/null
+ if [ $? -ne 0 ]; then
+ # there is no which command here. we produce nothing due to this.
+ echo
+ fi
+ echo $(which $to_find)
+}
+
+# this reports when we have totally failed to figure out where a folder
+# is actually located on the machine.
function intuition_failure()
{
missing="$1"; shift
- echo "We cannot intuit your $missing variable for this host."
+ if [ ! -z "$SHELL_DEBUG" ]; then
+ echo "Could not intuit '$missing' variable."
+ fi
# remove the variable because its value is busted.
unset $missing
}
export JAVA_HOME=/usr/lib/jvm/java-7-oracle/jre
fi
if [ ! -d "$JAVA_HOME" ]; then
- # try using a windows version.
-#note: this logic is untested.
-# probably will break due to space in path issues.
- declare -a any_there=$(find "/c/Program Files/java" -type d -iname "jdk" 2>/dev/null)
- if [ ${#any_there[*]} -gt 0 ]; then
- (( last = ${#any_there[@]} - 1 ))
- JAVA_HOME="${any_there[$last]}"
- fi
- if [ ! -d "$JAVA_HOME" ]; then
- # if no jdk, try a jre.
- declare -a any_there=$(find "/c/Program Files/java" -type d -iname "jre" 2>/dev/null)
- if [ ${#any_there[*]} -gt 0 ]; then
- (( last = ${#any_there[@]} - 1 ))
- JAVA_HOME="${any_there[$last]}"
- fi
+ JAVA_HOME="$(ls -d c:/tools/*jdk* 2>/dev/null)"
+fi
+if [ ! -d "$JAVA_HOME" ]; then
+ if [ ! -z "$(grep -i 'd:' /proc/mounts 2>/dev/null)" ]; then
+ # try using a windows version.
+ JAVA_HOME="$(ls -d d:/tools/*jdk* 2>/dev/null)"
fi
fi
# this should go last, since it changes the bin dir.
fi
# last thing is to tell them we couldn't find it.
if [ ! -d "$JAVA_HOME" ]; then
- if [ ! -z "$(which java)" ]; then
- echo "JAVA_HOME unknown, but java is in path."
- else
+ unset JAVA_HOME
+ unset JAVA_BIN_PIECE
+ if [ -z "$(whichable java 2>/dev/null)" ]; then
intuition_failure JAVA_HOME
- unset JAVA_BIN_PIECE
fi
fi
ECLIPSE_DIR=$HOME/apps/eclipse
fi
if [ ! -d "$ECLIPSE_DIR" ]; then
-#uhhh, default on winders?
- ECLIPSE_DIR="/c/Program Files/eclipse"
+ ECLIPSE_DIR="c:/tools/eclipse"
fi
if [ ! -d "$ECLIPSE_DIR" ]; then
- ECLIPSE_DIR="/c/tools/eclipse"
-fi
-if [ ! -d "$ECLIPSE_DIR" ]; then
- ECLIPSE_DIR="/d/tools/eclipse"
+ if [ ! -z "$(grep -i 'd:' /proc/mounts)" ]; then
+ ECLIPSE_DIR="d:/tools/eclipse"
+ fi
fi
if [ ! -d "$ECLIPSE_DIR" ]; then
- ECLIPSE_DIR="/e/tools/eclipse"
+ if [ ! -z "$(grep -i 'e:' /proc/mounts)" ]; then
+ ECLIPSE_DIR="e:/tools/eclipse"
+ fi
fi
# final option is to whine.
if [ ! -d "$ECLIPSE_DIR" ]; then
- if [ ! -z "$(which eclipse)" ]; then
- echo "ECLIPSE_DIR unknown, but eclipse is in path."
- else
- intuition_failure ECLIPSE_DIR;
+ unset ECLIPSE_DIR
+else
+ if [ ! -z "$(uname -a | grep -i cygwin)" ]; then
+ # fix the path for cygwin's bizarre requirement of /cygdrive/X.
+ ECLIPSE_DIR=$(echo $ECLIPSE_DIR | sed -e 's/^\(.\):/\/cygdrive\/\1/')
fi
fi
+if [ -z "$ECLIPSE_DIR" -a -z "$(whichable eclipse 2>/dev/null)" ]; then
+ intuition_failure ECLIPSE_DIR
+fi
############################
# any other paths to different versions.
if [ ! -z "$JAVA_HOME" ]; then
- export PATH=$JAVA_HOME/$JAVA_BIN_PIECE:$PATH
+ j="$JAVA_HOME"
+ if [ ! -z "$(uname -a | grep -i cygwin)" ]; then
+ j=$(echo $j | sed -e 's/^\(.\):/\/cygdrive\/\1/')
+ fi
+ export PATH=$j/$JAVA_BIN_PIECE:$PATH
fi
if [ ! -z "$ECLIPSE_DIR" ]; then
- export PATH=$ECLIPSE_DIR:$PATH
+ e="$ECLIPSE_DIR"
+ if [ ! -z "$(uname -a | grep -i cygwin)" ]; then
+ e=$(echo $e | sed -e 's/^\(.\):/\/cygdrive\/\1/')
+ fi
+ export PATH=$e:$PATH
fi
############################