Initial Fabric 26.2 port
This commit is contained in:
+96
@@ -0,0 +1,96 @@
|
||||
#!/usr/bin/env bash
|
||||
set -u
|
||||
cd "$(dirname "$0")" || exit 1
|
||||
|
||||
BUILD_ONLY=0
|
||||
[[ "${1:-}" == "--build-only" ]] && BUILD_ONLY=1
|
||||
|
||||
prop() { sed -n "s/^$1=//p" gradle.properties | tail -n 1 | tr -d '\r'; }
|
||||
|
||||
[[ -f gradle.properties ]] || { echo "[ERROR] gradle.properties tidak ditemukan."; exit 1; }
|
||||
|
||||
MOD_VERSION="$(prop mod_version)"
|
||||
MC_VERSION="$(prop minecraft_version)"
|
||||
ARCHIVES_BASE_NAME="$(prop archives_base_name)"
|
||||
ARCHIVES_BASE_NAME="${ARCHIVES_BASE_NAME:-item-despawn-timer}"
|
||||
|
||||
[[ -n "$MOD_VERSION" && -n "$MC_VERSION" ]] || { echo "[ERROR] Versi tidak lengkap di gradle.properties."; exit 1; }
|
||||
|
||||
PROJECT_VERSION="${MOD_VERSION}+mc${MC_VERSION}"
|
||||
JAR_PATH="$PWD/build/libs/${ARCHIVES_BASE_NAME}-${PROJECT_VERSION}.jar"
|
||||
|
||||
echo "============================================"
|
||||
echo " Item Despawn Timer - Fabric $MC_VERSION"
|
||||
echo " Version: $PROJECT_VERSION"
|
||||
echo "============================================"
|
||||
|
||||
git_integration() {
|
||||
command -v git >/dev/null || { echo "[ERROR] Git tidak ditemukan."; return 2; }
|
||||
git rev-parse --is-inside-work-tree >/dev/null 2>&1 || { echo "[ERROR] Bukan Git repository."; return 2; }
|
||||
|
||||
if [[ -n "$(git status --porcelain)" ]]; then
|
||||
git status --short
|
||||
default="Update Item Despawn Timer v$PROJECT_VERSION"
|
||||
read -r -p "Commit message [$default]: " msg
|
||||
msg="${msg:-$default}"
|
||||
git add -A || return 2
|
||||
git commit -m "$msg" || return 2
|
||||
else
|
||||
echo "[INFO] Tidak ada perubahan source untuk di-commit."
|
||||
fi
|
||||
|
||||
branch="$(git branch --show-current)"
|
||||
[[ -n "$branch" ]] || { echo "[ERROR] Branch aktif tidak ditemukan."; return 2; }
|
||||
git remote get-url origin >/dev/null 2>&1 || { echo "[ERROR] Remote origin belum dikonfigurasi."; return 2; }
|
||||
|
||||
local round=1
|
||||
while true; do
|
||||
local attempt=1
|
||||
while (( attempt <= 3 )); do
|
||||
echo "[INFO] Push attempt $attempt/3 (round $round)..."
|
||||
git push origin "$branch" && return 0
|
||||
((attempt++))
|
||||
(( attempt <= 3 )) && sleep 2
|
||||
done
|
||||
read -r -p "Push gagal 3x. Coba 3x lagi? [y/N]: " again
|
||||
[[ "$again" =~ ^[Yy]$ ]] || return 2
|
||||
((round++))
|
||||
done
|
||||
}
|
||||
|
||||
if (( BUILD_ONLY == 0 )) && [[ -f "$JAR_PATH" ]]; then
|
||||
echo
|
||||
echo "[INFO] Build untuk versi $PROJECT_VERSION sudah tersedia:"
|
||||
echo " $JAR_PATH"
|
||||
while true; do
|
||||
read -r -p "[C] Compile ulang / [G] Git saja / [Q] Keluar: " action
|
||||
case "$action" in
|
||||
C|c) break ;;
|
||||
G|g) git_integration; exit $? ;;
|
||||
Q|q) exit 0 ;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
|
||||
command -v java >/dev/null || { echo "[ERROR] Java tidak ditemukan."; exit 1; }
|
||||
JAVA_MAJOR="$(java --version 2>&1 | head -n1 | sed -E 's/.* ([0-9]+)(\..*)? .*/\1/')"
|
||||
[[ "$JAVA_MAJOR" =~ ^[0-9]+$ ]] && (( JAVA_MAJOR >= 25 )) || { echo "[ERROR] Java 25+ diperlukan."; exit 1; }
|
||||
|
||||
chmod +x gradlew 2>/dev/null || true
|
||||
./gradlew clean build || { echo "[ERROR] Build gagal."; exit 1; }
|
||||
|
||||
[[ -f "$JAR_PATH" ]] || {
|
||||
echo "[ERROR] Build selesai tetapi JAR yang diharapkan tidak ditemukan:"
|
||||
echo " $JAR_PATH"
|
||||
ls -1 build/libs/*.jar 2>/dev/null || true
|
||||
exit 1
|
||||
}
|
||||
|
||||
echo
|
||||
echo "BUILD SUCCESS"
|
||||
echo "JAR: $JAR_PATH"
|
||||
(( BUILD_ONLY == 1 )) && exit 0
|
||||
|
||||
read -r -p "Commit dan push perubahan ke Git? [y/N]: " push
|
||||
[[ "$push" =~ ^[Yy]$ ]] && git_integration
|
||||
exit $?
|
||||
Reference in New Issue
Block a user