#!/bin/bash
#
# A wrapper for calling Jar from Cygwin
# Author: Igor Peshansky <pechtcha@cs.nyu.edu>
# Version: 0.96
#
# $Id: jar,v 1.2 2012/01/09 14:39:47 tstaig Exp $ 
#

ME="`basename $0`"
EXEC_NAME="jar.exe"
declare -a EXEC_PATH=("bin")

# KLUDGE
[ -z "$JAVA_HOME" ] && JAVA_HOME="/cygdrive/c/Program Files/IBM/Java14"

function DEBUG() { false; }

function find_exec() {
   local path="$1"; shift
   local name="$1"; shift
   for D in "$@"; do
      DEBUG && echo "Trying '$path/$D/$name'" >&2
      if [ -x "$path/$D/$name" ]; then
         DEBUG && echo "Found '$path/$D/$name'" >&2
         echo "$path/$D/$name"
         return 0
      fi
   done
   return 1
}

if [ -z "$JAVA_HOME" ]; then
   echo "JAVA_HOME is not set"
   exit 1
else
   EXEC_CMD="`find_exec "$JAVA_HOME" "$EXEC_NAME" "${EXEC_PATH[@]}"`"
   if [ -z "$EXEC_CMD" ]; then
      echo "JAVA_HOME ($JAVA_HOME) is not pointing to a JDK"
      exit 1
   fi
fi

#EXEC_CMD="/cygdrive/c/Program Files/IBM/Java14/bin/$EXEC_NAME"
[ -n "$CLASSPATH" ] && export CLASSPATH="`cygpath -p -w "$CLASSPATH"`"
ARGS=""
if [ -n "$1" ]; then
   firstarg="$1"; shift
   firstarg="$(echo "$firstarg"|sed "s,','\"'\"',g")"
   ARGS="$ARGS '$firstarg'"
   # Check for filename
   case "$firstarg" in
      *f*) arg="`cygpath -w "$1"`"
           shift
           ARGS="$ARGS '$arg'";;
   esac
   # Check for manifest
   case "$firstarg" in
      *m*) arg="`cygpath -w "$1"`"
           shift
           ARGS="$ARGS '$arg'";;
   esac
fi
# Change all filenames
while [ -n "$1" ]; do
   arg="$1"
   arg="$(echo "$arg"|sed "s,','\"'\"',g")"
   shift
   case "$arg" in
      @*)
			arg="$(echo "$arg"|sed "s,@,,g")"
         arg="@`cygpath -p -w "$arg"`"
         ;;
      -*) ;;
      *) arg="`cygpath -p -w "$arg"`" ;;
   esac
   ARGS="$ARGS '$arg'"
done

eval "set -- $ARGS"

exec -a "$ME" "$EXEC_CMD" "$@"

