#!/bin/sh
# eydos-enjarify [-j JOBS] [--progress] APP.apk OUT.jar [HIERARCHY.jar...]: enjarify, then the fixup pass, so HotSpot runs the jar.
# HIERARCHY.jar are the framework jars the app runs against; --progress prints "progress translate|fixup DONE TOTAL" lines.

set -e

here=$(dirname "$(readlink -f "$0")")
if [ -x "$here/enjarify-rs/target/release/enjarify" ]; then
	translator=$here/enjarify-rs/target/release/enjarify
	fixup=$here/fixup/enjarify-fixup.jar
else
	translator=/usr/lib/eydos-enjarify/enjarify
	fixup=/usr/share/eydos-enjarify/fixup/enjarify-fixup.jar
fi
asm=${ASM:-/usr/share/java/asm-all.jar}

jobs=$(nproc)
progress=
while [ $# -gt 0 ]; do
	case "$1" in
		-j) jobs=$2; shift 2 ;;
		--progress) progress=--progress; shift ;;
		*) break ;;
	esac
done
if [ $# -lt 2 ]; then
	echo "usage: eydos-enjarify [-j JOBS] [--progress] APP.apk OUT.jar [HIERARCHY.jar...]" >&2
	exit 2
fi
apk=$1
out=$2
shift 2

raw=$(mktemp --tmpdir eydos-enjarify.XXXXXX.jar)
trap 'rm -f "$raw"' EXIT

# --fast skips bytecode clean-ups HotSpot's JIT does anyway: about a sixth faster, a few percent more bytecode.
"$translator" --resources --force --fast --store --jobs "$jobs" $progress -o "$raw" "$apk"
"${JAVA:-java}" ${JAVA_OPTS:--XX:MaxRAMPercentage=50} -cp "$fixup:$asm" Dex2JvmFixup -j "$jobs" $progress "$raw" "$out" "$@"
