123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- #!/bin/bash
- #
- # Launcher script for Clojure programs. These environment variables can be
- # used to configure the script:
- #
- # CLOJURE_HOME
- # The root directory where Clojure is installed.
- # CLOJURE_JAVA
- # The name of the java executable used to run Clojure.
- # CLOJURE_JAVA_OPTS
- # Additional options to be passed to the java executable.
- # CLOJURE_CLASSPATH
- # A path to be added to Clojure's classpath.
- # CLOJURE_LIBRARY_PATH
- # A path to be searched for native code such as DLL's or JNI
- # libraries. This gets added to the Java options as
- # "-Djava.library.path=$CLOJURE_LIBRARY_PATH".
- # CLOJURE_LIB
- # This directory, and any jars inside it, will be automatically
- # added to Clojure's classpath.
- #
- # CLOJURE_JLINE
- # This should be the path to Jline jar.
- # TODO:
- # make CLOJURE_LIB a path instead of a single directory
- # allow for adding to CLOJURE_LIB from the command line
- usage="\
- usage: clojure [options] [file1 [file2] ...]
- Options:
- --help, -h show this message
- --java-cmd, -J the Java executable to use
- --java-opts, -j add options to be passed on to the JVM
- --classpath, -cp add to Clojure's classpath
- --library-path, -L add to the path to search for native libraries
- --verbose, -v print initialization information
- "
- ## read ~/.clojurerc for home configuration
- [ -e ~/.clojurerc ] && . ~/.clojurerc
- ## read ./.clojurerc for project specific configuration
- [ -e ./.clojurerc ] && . ./.clojurerc
- if [ ! "$CLOJURE_HOME" ]; then
- # Find the real path to Clojure's home directory if $0 is a symlink
- #program="$0"
- #while [ -h "$program" ]; do
- # ls=`ls -ld "$program"`
- # link=`expr "$ls" : '.*-> \(.*\)$'`
- # if expr "$link" : '.*/.*' >/dev/null; then
- # program="$link"
- # else
- # program="`dirname $program`/$link"
- # fi
- #done
- #script_dir=`dirname "$program"`
- #relative_clojure_home=`dirname "$script_dir"`
- #CLOJURE_HOME=`cd "$relative_clojure_home" && pwd`
- . /etc/profile.d/clojure.sh
- fi
- if [ ! "$CLOJURE_JAVA" ]; then
- CLOJURE_JAVA="java";
- fi
- if [ ! "$CLOJURE_JAVA_OPTS" ]; then
- CLOJURE_JAVA_OPTS="-Dpid=$$"; # set the pid for SLIME
- fi
- if [ ! "$CLOJURE_CLASSPATH" ]; then
- CLOJURE_CLASSPATH=".:/usr/share/java/asm-all-4.jar"
- fi
- ## Add Clojure home jars.
- for jar in "$CLOJURE_HOME"/*.jar; do
- CLOJURE_CLASSPATH="$CLOJURE_CLASSPATH:$jar"
- done
- if [ -d "$CLOJURE_LIB" ]; then
- CLOJURE_CLASSPATH="$CLOJURE_CLASSPATH:$CLOJURE_LIB"
- for jar in "$CLOJURE_LIB"/*.jar; do
- CLOJURE_CLASSPATH="$CLOJURE_CLASSPATH:$jar"
- done
- fi
- # this is now the same for both the repl and for scripts
- main="clojure.main"
- repl=0
- verbose=0
- while true; do
- case $1 in
- -h|--help)
- echo "$usage"; exit 1;;
- -J|--java-cmd)
- CLOJURE_JAVA="$2"; shift; shift;;
- -j|--java-opts)
- CLOJURE_JAVA_OPTS="$CLOJURE_JAVA_OPTS $2"; shift; shift;;
- -cp|--classpath)
- CLOJURE_CLASSPATH="$CLOJURE_CLASSPATH:$2"; shift; shift;;
- -L|--library-path)
- if [ "$CLOJURE_LIBRARY_PATH" ]; then
- CLOJURE_LIBRARY_PATH="$CLOJURE_LIBRARY_PATH:$2";
- else
- CLOJURE_LIBRARY_PATH="$2";
- fi
- shift; shift;;
- -v|--verbose)
- verbose=1; shift;;
- *) break;;
- esac
- done
- [ $verbose -eq 1 ] && echo "$CLOJURE_CLASSPATH"
- # If we didn't get any files to load on the commandline, we want to run the
- # repl, with command line editing if available.
- [ $# -eq 0 ] && repl=1
- # If the classpath contains the JLine jar, use the JLine console runner
- if expr "$CLOJURE_CLASSPATH" : ".*jline.*\.jar" >/dev/null; then
- [ $repl -eq 1 ] && jline="jline.ConsoleRunner"
- fi
- # Enable rlwrap if present
- if [ $repl -eq 1 ] && [ -z $jline ]; then
- rlwrap=`type -p rlwrap`
- fi
- ## Add CLOJURE_LIBRARY_PATH to the Java options if necessary
- if [ -n "$CLOJURE_LIBRARY_PATH" ]; then
- CLOJURE_JAVA_OPTS="$CLOJURE_JAVA_OPTS -Djava.library.path=$CLOJURE_LIBRARY_PATH"
- fi
- cmd=`echo $rlwrap "$CLOJURE_JAVA" "$CLOJURE_JAVA_OPTS" -cp "$CLOJURE_CLASSPATH" $jline $main`
- [ $verbose -eq 1 ] && echo "$cmd" "$@"
- exec `echo $cmd` "$@"
|