#!/bin/bash

conf_clojure() {
    CLOJURE_DIR=/home/rasched/app/clojure/clojure
    CLOJURE_JAR=$CLOJURE_DIR/clojure.jar
}

conf_rlwrap() {
    RLWRAP=/home/rasched/app/rlwrap/current/bin/rlwrap
    breakchars="(){}[],^%\$#@\"\";:''|\\"
    completions=$HOME/.clj_completions
    history_file=$HOME/.clj_history
}

conf_workflow() {
    hr=0
    src=src
    lib=lib
    debug=0
}

conf() {
    conf_clojure
    conf_rlwrap
    conf_workflow
}

basic_cp() {
    unset CLASSPATH
    CLASSPATH=$CLOJURE_JAR
}

src_cp() {
    if [ -d $(pwd)/$src ]; then
        CLASSPATH=$CLASSPATH:$(pwd)/$src
    fi
}

lib_jars_cp() {
    if [ -d $(pwd)/$lib ]; then

        jars=$(find -L $(pwd)/$lib -name "*.jar" -print)
        for j in $jars; do
            CLASSPATH=$CLASSPATH:$j
        done

    fi
}

lib_dir_cp() {
    if [ -d $(pwd)/$lib ]; then

        for f in $(ls $(pwd)/$lib); do
            x=$(readlink --canonicalize-existing $(pwd)/$lib/$f)
            if [ -d $a ]; then
                CLASSPATH=$CLASSPATH:$x
            fi
        done

    fi
}

hr_cp() {
    src_cp
    lib_jars_cp
    lib_dir_cp
}

log_cp() {
    echo $CLASSPATH | tr ':' '\n' | cat -A
}

entry() {
    $RLWRAP \
        --remember \
        --complete-filenames \
        --break-chars $breakchars \
        --file $completions \
        --history-filename $history_file \
            java -classpath $CLASSPATH clojure.main -e "" --repl "$@"
}


conf
basic_cp
if [ $hr == 1 ]; then
    hr_cp
fi
if [ $debug == 1 ]; then
    log_cp
fi
entry "$@"
