#!/bin/sh

# This script aims to be a POSIX shell reimplementation of
# GNU Guix's ecj-javac-wrapper guile script.

export CLASSPATH="${CLASSPATH:-/usr/lib/rt.jar}:/usr/share/java/ecj-bootstrap.jar:/usr/share/classpath/tools.zip:/usr/share/classpath/glibj.zip"
_javacmd="${JAVACMD:-/usr/bin/jamvm}"

if [ $# -lt 1 ]; then
    printf "javac: no arguments given!\n"
    exit
fi

_args=""
for arg in $(echo $@ | sed 's/ -/#-/g' | tr '#' '\n' | grep -v -e '^-J' | sed "s/ /#/g"); do
    case $arg in
        -bootclasspath*) bootcp="$(echo $arg | sed 's/-bootclasspath//' | tr '#' ' ')";;
        -classpath*)         cp="$(echo $arg | sed 's/-classpath//'     | tr '#' ' ')";;
        -cp*)                cp="$(echo $arg | sed 's/-cp//'            | tr '#' ' ')";;
        *)         _args="$_args $(echo $arg | tr '#' ' ')";;
    esac
done

# NOTE: This is *not* part of guix's script.
JVM_MEM="$(free -m | awk '/^Mem:/ {print int($2 * .33)}')M"

set -x
$_javacmd \
    -Xmx${JVM_MEM} \
    -classpath "$CLASSPATH" \
    "org.eclipse.jdt.internal.compiler.batch.Main" \
    -bootclasspath "$bootcp" \
    -cp "$cp" \
    $_args

