Home | History | Annotate | Download | only in bin
      1 #!/usr/bin/env bash
      2 #
      3 ##############################################################################
      4 # Copyright 2002-2011, LAMP/EPFL
      5 # Copyright 2011-2015, JetBrains
      6 #
      7 # This is free software; see the distribution for copying conditions.
      8 # There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
      9 # PARTICULAR PURPOSE.
     10 ##############################################################################
     11 
     12 cygwin=false;
     13 case "`uname`" in
     14     CYGWIN*) cygwin=true ;;
     15 esac
     16 
     17 # Based on findScalaHome() from scalac script
     18 findKotlinHome() {
     19     local source="${BASH_SOURCE[0]}"
     20     while [ -h "$source" ] ; do
     21         local linked="$(readlink "$source")"
     22         local dir="$(cd -P $(dirname "$source") && cd -P $(dirname "$linked") && pwd)"
     23         source="$dir/$(basename "$linked")"
     24     done
     25     (cd -P "$(dirname "$source")/.." && pwd)
     26 }
     27 
     28 KOTLIN_HOME="$(findKotlinHome)"
     29 
     30 if $cygwin; then
     31     # Remove spaces from KOTLIN_HOME on windows
     32     KOTLIN_HOME=`cygpath --windows --short-name "$KOTLIN_HOME"`
     33 fi
     34 
     35 [ -n "$JAVA_OPTS" ] || JAVA_OPTS="-Xmx256M -Xms32M"
     36 
     37 declare -a java_args
     38 declare -a kotlin_args
     39 
     40 while [ $# -gt 0 ]; do
     41   case "$1" in
     42     -D*)
     43       java_args=("${java_args[@]}" "$1")
     44       shift
     45       ;;
     46     -J*)
     47       java_args=("${java_args[@]}" "${1:2}")
     48       shift
     49       ;;
     50     *)
     51       kotlin_args=("${kotlin_args[@]}" "$1")
     52       shift
     53       ;;
     54   esac
     55 done
     56 
     57 if [ -z "$JAVACMD" -a -n "$JAVA_HOME" -a -x "$JAVA_HOME/bin/java" ]; then
     58     JAVACMD="$JAVA_HOME/bin/java"
     59 fi
     60 
     61 declare -a kotlin_app
     62 
     63 if [ -n "$KOTLIN_RUNNER" ];
     64 then
     65     java_args=("${java_args[@]}" "-Dkotlin.home=${KOTLIN_HOME}")
     66     kotlin_app=("${KOTLIN_HOME}/lib/kotlin-runner.jar" "org.jetbrains.kotlin.runner.Main")
     67 else
     68     [ -n "$KOTLIN_COMPILER" ] || KOTLIN_COMPILER=org.jetbrains.kotlin.cli.jvm.K2JVMCompiler
     69     java_args=("${java_args[@]}" "-noverify")
     70 
     71     kotlin_app=("${KOTLIN_HOME}/lib/kotlin-preloader.jar" "org.jetbrains.kotlin.preloading.Preloader" "-cp" "${KOTLIN_HOME}/lib/kotlin-compiler.jar" $KOTLIN_COMPILER)
     72 fi
     73 
     74 "${JAVACMD:=java}" $JAVA_OPTS "${java_args[@]}" -cp "${kotlin_app[@]}" "${kotlin_args[@]}"
     75