AppleCommander/tools/retrolambda.sh

50 lines
1.2 KiB
Bash
Executable File

#!/bin/sh
if [ $# -gt 0 -a "$1" = "-v" ]
then
RETROFLAG="false"
JARFLAG="v"
shift
set -x
fi
if [ $# -ne 1 ]
then
echo Provide on jar file to convert on the command line.
exit 1
fi
REALPATH=$(realpath $0)
BIN_DIR=`dirname "$REALPATH"`
LIB_DIR=$BIN_DIR
JAR_TO_CONVERT="$1"
INPUT_DIR="$JAR_TO_CONVERT".inputdir
OUTPUT_DIR="$JAR_TO_CONVERT".outputdir
rm -rf "$INPUT_DIR"
rm -rf "$OUTPUT_DIR"
mkdir "$INPUT_DIR"
mkdir "$OUTPUT_DIR"
(cd "$INPUT_DIR"; jar -x${JARFLAG}f $OLDPWD/"$JAR_TO_CONVERT")
echo "Converting..."
java \
-Dretrolambda.bytecodeVersion=49 \
-Dretrolambda.defaultMethods=true \
-Dretrolambda.inputDir="$INPUT_DIR" \
-Dretrolambda.outputDir="$OUTPUT_DIR" \
-Dretrolambda.classpath="$JAR_TO_CONVERT" \
-Dretrolambda.javacHacks=true \
-Dretrolambda.quiet=${RETROFLAG:-true} \
-jar "$LIB_DIR"/retrolambda-2.5.6.jar
# The order of the "m" and "f" must match the order that the
# corresponding files appear in the argument list. This is
# so stupid...
NEW_JAR_NAME="${JAR_TO_CONVERT%.jar}-java5.jar"
echo "Repackaging to ${NEW_JAR_NAME}"
jar -c${JARFLAG}fm "${NEW_JAR_NAME}" \
"$OUTPUT_DIR"/META-INF/MANIFEST.MF \
-C "$OUTPUT_DIR" .