aboutsummaryrefslogblamecommitdiff
path: root/bin/dotr
blob: f1da6c8eab263e6f33829e7ffbde2a84734b214e (plain) (tree)
1
2
3
4
5
6
7
8
9


                                               
                                                                               


                                  
                                     
                                                                     
                                                                                                        
 


















                                                                                                                          

                  










                                                                                                           


                    

                                     


                
#!/bin/bash

# Try to autodetect real location of the script
DOTTY_ROOT="$(readlink "$0")"              #  relative, symbolic links resolved
if [[ "$DOTTY_ROOT" == "" ]]; then
  DOTTY_ROOT="$0"
fi
DOTTY_ROOT="$(dirname "$DOTTY_ROOT")"
DOTTY_ROOT="$( cd "$DOTTY_ROOT" >& /dev/null && pwd )/.."  # absolute
SCALA_VERSION=$(grep "scalaVersion in" "$DOTTY_ROOT/project/Build.scala"|sed -n 's/.*\"\(.*\)\".*/\1/'p)

function find_jar {
    # Usage:
    #   find_jar path/to/location file.jar
    local artifact="$1/$2"

    if [ ! -f "$artifact" ]; then
        artifact=$(find "$HOME/.coursier/cache" -iname "$2")
    fi

    echo "$artifact"
}

# Autodetecting the scala-library location, in case it wasn't provided by an environment variable
if [ "$SCALA_LIBRARY_JAR" == "" ]; then
    SCALA_LIBRARY_JAR=$(find_jar "$HOME/.ivy2/cache/org.scala-lang/scala-library/jars" "scala-library-$SCALA_VERSION.jar")
fi

# CLASS_PATH is derived from the DOTTY_ROOT and SCALA_LIBRARY_JAR
CLASS_PATH="-Xbootclasspath/a:.:$DOTTY_ROOT/target/scala-2.11/classes/:.:$SCALA_LIBRARY_JAR"

function runMain {
    local jbin=$(which "java")

    if [ ! -z "$JAVA_BIN" ]; then
        jbin=$JAVA_BIN
    fi

    if [ "$jbin" == "" ]; then
        echo "java bin not detected - please specify with \$JAVA_BIN or install java to a default location"
    else
        eval "$jbin $CLASS_PATH $@"
    fi
}

if [ -z "$1" ]; then
    echo "Starting dotty REPL..."
    eval "$DOTTY_ROOT/bin/dotc -repl"
else
    runMain "$@"
fi