scriptify.inc 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #!/bin/bash
  2. if command -v "tput" &> /dev/null ; then
  3. if [ -z "$COLUMNS" ]; then
  4. export COLUMNS="$(tput cols)"
  5. fi
  6. if [ -z "$LINES" ]; then
  7. export LINES="$(tput lines)"
  8. fi
  9. fi
  10. # See "https://coderwall.com/p/ssuaxa/how-to-make-a-jar-file-linux-executable"
  11. SCRIPT_PATH=`which "$0" 2>/dev/null`
  12. [ $? -gt 0 -a -f "$0" ] && SCRIPT_PATH="./$0"
  13. LAUNCHER_DIR="$(dirname $SCRIPT_PATH 2>/dev/null)"
  14. if [ $? -ne 0 ]; then
  15. LAUNCHER_DIR="."
  16. fi
  17. if type "uname" &> /dev/null; then
  18. if [ `uname -o` = "Cygwin" ]; then
  19. SCRIPT_PATH=$(cygpath -w ${SCRIPT_PATH})
  20. LAUNCHER_DIR=$(cygpath -w ${LAUNCHER_DIR})
  21. fi
  22. fi
  23. java=java
  24. if test -n "$JAVA_HOME"; then
  25. java="$JAVA_HOME/bin/java"
  26. fi
  27. javaArgs[0]="-Dlauncher.dir=$LAUNCHER_DIR"
  28. javaIndex="1"
  29. appIndex="0"
  30. for var in "$@"; do
  31. if [[ ${var} == -Dlauncher.dir=* ]]; then
  32. javaArgs[0]="${var}"
  33. elif [[ ${var} == -D* ]]; then
  34. javaArgs[${javaIndex}]="${var}"
  35. javaIndex=$((javaIndex + 1))
  36. else
  37. appArgs[${appIndex}]="${var}"
  38. appIndex=$((appIndex + 1))
  39. fi
  40. done
  41. stty -echoctl &> /dev/null
  42. exec "${java}" -XX:TieredStopAtLevel=1 "${javaArgs[@]}" -jar "$SCRIPT_PATH" "${appArgs[@]}"
  43. exit $?