This repository has been archived on 2026-10-02. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
slashblade-lostblade/compile-decompiled.sh
T

43 lines
1.8 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
cd "$(dirname "$0")"
mkdir -p build/classes build/logs build/libs
ROOT="$(pwd)"
TDLM_ROOT="$(cd "$ROOT/../.." && pwd)"
CP="${CP:-}"
if [ -z "$CP" ]; then
CP_ENTRIES=()
for jar in \
"$TDLM_ROOT/modsource/CodeChickenCore/build/rfg/srg_merged_minecraft.jar" \
"$TDLM_ROOT/modsource/CodeChickenCore/build/rfg/recompiled_minecraft-1.7.10.jar" \
"$TDLM_ROOT/modsource/IndustrialCraft2/build/rfg/srg_patched_minecraft-classes.jar"; do
[ -f "$jar" ] && CP_ENTRIES+=("$jar")
done
for dir in "$TDLM_ROOT/Uranium/build/bundle/libraries" "$TDLM_ROOT/Uranium-server-run/libraries" "$TDLM_ROOT/Uranium-server-run/mods" "$TDLM_ROOT/client/mods" "$TDLM_ROOT/_downloaded-deps" "$TDLM_ROOT/modsource/ImmersiveEngineering/externalLibs" "$TDLM_ROOT/modsource/CodeChickenCore/run/client/mods" "$TDLM_ROOT/modsource/CodeChickenCore/run/mods" "$TDLM_ROOT/modsource/Mekanism-Community-Edition/libs" "$TDLM_ROOT/modsource/ExtraBotany/libs"; do
if [ -d "$dir" ]; then
while IFS= read -r jar; do
case "$jar" in
*-deobf.jar) continue ;;
esac
CP_ENTRIES+=("$jar")
done < <(find "$dir" -name '*.jar' -type f | sort)
fi
done
if [ ${#CP_ENTRIES[@]} -eq 0 ]; then
echo "no dependency jars found for decompiled build" >&2
exit 1
fi
CP="$(IFS=:; echo "${CP_ENTRIES[*]}")"
fi
find src/main/java -name '*.java' > build/sources.list
if [ ! -s build/sources.list ]; then
echo "no decompiled java sources found" >&2
exit 1
fi
javac -source 8 -target 8 -encoding UTF-8 -cp "$CP" -d build/classes @build/sources.list 2>&1 | tee build/logs/javac.log
if [ -d src/main/resources ]; then
( cd src/main/resources && tar cf - . ) | ( cd build/classes && tar xf - )
fi
jar cf "build/libs/[BD]遗忘Lostblade-1.0.0.jar" -C build/classes .
echo "compiled build/libs/[BD]遗忘Lostblade-1.0.0.jar"