Rewrite scripts and fix more build issues
This commit is contained in:
123
scripts/importSources.sh
Normal file
123
scripts/importSources.sh
Normal file
@@ -0,0 +1,123 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
maintask=$2
|
||||
tasktitle=maintask && "Import Sources" || "Import Sources (Subtask)"
|
||||
|
||||
# SCRIPT HEADER start
|
||||
echo "----------------------------------------"
|
||||
echo " $(bashcolor 1 32)Task$(bashcolorend) - "
|
||||
echo " This will import unimported sources newly added/mod by Akarin to Paper workspace"
|
||||
echo " "
|
||||
echo "----------------------------------------"
|
||||
# SCRIPT HEADER end
|
||||
|
||||
# For a description of this script, see updateUpstream.sh.
|
||||
|
||||
# get base dir regardless of execution location
|
||||
basedir=$1
|
||||
|
||||
source "$basedir/scripts/functions.sh"
|
||||
|
||||
paperworkdir="$basedir/Paper/work"
|
||||
|
||||
paperserverdir="$basedir/Paper/Paper-Server"
|
||||
papersrcdir="$paperserverdir/src/main/java"
|
||||
papernmsdir="$papersrcdir/net/minecraft/server"
|
||||
|
||||
(
|
||||
# fast-fail if Paper not set
|
||||
if [ ! -f "$papernmsdir" ]; then
|
||||
echo "$(bashcolor 1 31) Exception $(bashcolorend) - Paper sources not generated, run updateUpstream.sh to setup."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
minecraftversion=$(cat "$basedir"/Paper/work/BuildData/info.json | grep minecraftVersion | cut -d '"' -f 4)
|
||||
decompiledir=$paperworkdir/Minecraft/$minecraftversion/spigot
|
||||
|
||||
nms="net/minecraft/server"
|
||||
export IMPORT_LOG="" # for commit message, list all files and source for libs
|
||||
basedir
|
||||
|
||||
function importToPaperWorkspace {
|
||||
if [ -f "$papernmsdir/$1.java" ]; then
|
||||
echo "$(bashcolor 1 33) Skipped $(bashcolorend) - Already imported $1.java"
|
||||
return 0
|
||||
fi
|
||||
|
||||
file="$1.java"
|
||||
target="$papernmsdir/$file"
|
||||
base="$decompiledir/$nms/$file"
|
||||
|
||||
if [[ ! -f "$target" ]]; then
|
||||
export IMPORT_LOG="$IMPORT_LOG Import: $file\n";
|
||||
echo "Import: $file"
|
||||
cp "$base" "$target"
|
||||
fi
|
||||
}
|
||||
|
||||
function importLibraryToPaperWorkspace {
|
||||
group=$1
|
||||
lib=$2
|
||||
prefix=$3
|
||||
shift 3
|
||||
for file in "$@"; do
|
||||
file="$prefix/$file"
|
||||
target="$papersrcdir/$file"
|
||||
targetdir=$(dirname "$target")
|
||||
mkdir -p "${targetdir}"
|
||||
|
||||
base="$paperworkdir/Minecraft/$minecraftversion/libraries/${group}/${lib}/$file"
|
||||
if [ ! -f "$base" ]; then
|
||||
echo "$(bashcolor 1 31) Exception $(bashcolorend) - Cannot find file $file.java of lib $lib in group $group to import, re-decomplie or remove the import."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
export IMPORT_LOG="$IMPORT_LOG Import: $file from lib $lib\n";
|
||||
echo "Import: $file ($lib)"
|
||||
sed 's/\r$//' "$base" > "$target" || exit 1
|
||||
done
|
||||
}
|
||||
|
||||
(
|
||||
cd "$paperserverdir"
|
||||
lastcommit=$(git log -1 --pretty=oneline --abbrev-commit)
|
||||
if [[ "$lastcommit" = *"Extra dev imports of Akarin"* ]]; then
|
||||
git reset --hard HEAD^
|
||||
fi
|
||||
)
|
||||
|
||||
# Filter and import every files which have patch to modify
|
||||
patchedFiles=$(cat patches/server/* | grep "+++ b/src/main/java/net/minecraft/server/" | sort | uniq | sed 's/\+\+\+ b\/src\/main\/java\/net\/minecraft\/server\///g' | sed 's/.java//g')
|
||||
|
||||
patchedFilesNonNMS=$(cat patches/server/* | grep "create mode " | grep -Po "src/main/java/net/minecraft/server/(.*?).java" | sort | uniq | sed 's/src\/main\/java\/net\/minecraft\/server\///g' | sed 's/.java//g')
|
||||
|
||||
for f in $patchedFiles; do
|
||||
containsElement "$f" ${patchedFilesNonNMS[@]}
|
||||
if [ "$?" == "1" ]; then
|
||||
if [ ! -f "$papersrcdir/$nms/$f.java" ]; then
|
||||
if [ ! -f "$decompiledir/$nms/$f.java" ]; then
|
||||
echo "$(bashcolor 1 31) ERROR!!! Missing NMS$(bashcolor 1 34) $f $(bashcolorend)";
|
||||
echo "$(bashcolor 1 31) Exception $(bashcolorend) - Cannot find NMS file $f.java to import, re-decomplie or remove the import."
|
||||
exit 1
|
||||
else
|
||||
importToPaperWorkspace $f
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
# NMS import format:
|
||||
# importToPaperWorkspace MinecraftServer.java
|
||||
|
||||
# Library import format (multiple files are supported):
|
||||
# importLibraryToPaperWorkspace com.mojang datafixerupper com/mojang/datafixers/util Either.java
|
||||
|
||||
# Submit imports by commit with file descriptions
|
||||
(
|
||||
cd "$paperserverdir"
|
||||
# rm -rf nms-patches
|
||||
git add . &> /dev/null
|
||||
echo -e "Extra dev imports of Akarin:\n\n$IMPORT_LOG" | git commit src -F - &> /dev/null
|
||||
echo " $(bashcolor 1 32) Succeed$(bashcolorend) - Sources have been imported to the current branch/state of Paper/Paper-Server"
|
||||
)
|
||||
Reference in New Issue
Block a user