dining bench facing fix
This commit is contained in:
+178
@@ -0,0 +1,178 @@
|
||||
#!/usr/bin/env bash
|
||||
set -u
|
||||
cd "$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)" || exit 1
|
||||
|
||||
[[ -f gradle.properties ]] || { echo "[ERROR] gradle.properties tidak ditemukan."; exit 1; }
|
||||
|
||||
get_prop() { sed -n "s/^$1=//p" gradle.properties | tail -n 1 | tr -d '\r'; }
|
||||
|
||||
refresh() {
|
||||
MOD_VERSION="$(get_prop mod_version)"; MOD_VERSION="${MOD_VERSION:-unknown}"
|
||||
MINECRAFT_VERSION="$(get_prop minecraft_version)"; MINECRAFT_VERSION="${MINECRAFT_VERSION:-26.2}"
|
||||
ARCHIVES_BASE_NAME="$(get_prop archives_base_name)"; ARCHIVES_BASE_NAME="${ARCHIVES_BASE_NAME:-handcrafted}"
|
||||
JAR_PATH="$PWD/build/libs/$ARCHIVES_BASE_NAME-$MOD_VERSION.jar"
|
||||
TAG="v$MOD_VERSION"
|
||||
}
|
||||
|
||||
compile_mod() {
|
||||
echo
|
||||
echo "[COMPILE] Building $ARCHIVES_BASE_NAME $MOD_VERSION..."
|
||||
if [[ -f ./compile.sh ]]; then
|
||||
bash ./compile.sh --build-only || return 1
|
||||
elif [[ -f ./gradlew ]]; then
|
||||
chmod +x ./gradlew 2>/dev/null || true
|
||||
./gradlew clean build --console=plain || return 1
|
||||
else
|
||||
echo "[ERROR] compile.sh maupun gradlew tidak ditemukan."
|
||||
return 1
|
||||
fi
|
||||
[[ -f "$JAR_PATH" ]] || { echo "[ERROR] JAR tidak ditemukan: $JAR_PATH"; return 1; }
|
||||
echo "[OK] JAR: $JAR_PATH"
|
||||
}
|
||||
|
||||
push_git() {
|
||||
echo
|
||||
echo "[GIT] Push..."
|
||||
command -v git >/dev/null 2>&1 || { echo "[ERROR] Git tidak ditemukan."; return 1; }
|
||||
git rev-parse --is-inside-work-tree >/dev/null 2>&1 || {
|
||||
echo "[ERROR] Folder belum menjadi Git repository."
|
||||
echo "Jalankan: git init"
|
||||
return 1
|
||||
}
|
||||
git remote get-url origin >/dev/null 2>&1 || { echo "[ERROR] Remote origin belum dikonfigurasi."; return 1; }
|
||||
|
||||
if [[ -n "$(git status --porcelain)" ]]; then
|
||||
git status --short
|
||||
read -r -p "Commit message [Handcrafted $MOD_VERSION]: " msg
|
||||
msg="${msg:-Handcrafted $MOD_VERSION}"
|
||||
git add -A || return 1
|
||||
git commit -m "$msg" || return 1
|
||||
else
|
||||
echo "[INFO] Working tree bersih."
|
||||
fi
|
||||
|
||||
branch="$(git branch --show-current)"
|
||||
[[ -n "$branch" ]] || { echo "[ERROR] Branch aktif tidak ditemukan."; return 1; }
|
||||
git push origin "$branch" || { echo "[ERROR] Push gagal."; return 1; }
|
||||
echo "[OK] Push selesai."
|
||||
}
|
||||
|
||||
test_mod() {
|
||||
echo
|
||||
echo "[TEST] Menjalankan Minecraft test client..."
|
||||
if [[ -f ./gradlew ]]; then
|
||||
chmod +x ./gradlew 2>/dev/null || true
|
||||
./gradlew runClient --console=plain
|
||||
rc=$?
|
||||
[[ $rc -eq 0 ]] || echo "[WARN] Test client selesai dengan exit code $rc."
|
||||
else
|
||||
echo "[ERROR] gradlew tidak ditemukan."
|
||||
return 1
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
||||
make_release() {
|
||||
echo
|
||||
[[ -f "$JAR_PATH" ]] || { echo "[ERROR] Release dibatalkan: JAR $MOD_VERSION tidak ditemukan."; return 1; }
|
||||
command -v git >/dev/null 2>&1 || { echo "[ERROR] Git tidak ditemukan."; return 1; }
|
||||
git rev-parse --is-inside-work-tree >/dev/null 2>&1 || { echo "[ERROR] Bukan Git repository."; return 1; }
|
||||
|
||||
if git rev-parse "$TAG" >/dev/null 2>&1; then
|
||||
echo "[INFO] Tag $TAG sudah ada. Tidak membuat ulang."
|
||||
return 0
|
||||
fi
|
||||
|
||||
echo "JAR : $JAR_PATH"
|
||||
echo "Tag : $TAG"
|
||||
read -r -p "Buat release tag $TAG? [Y/N]: " ans
|
||||
[[ "$ans" =~ ^[Yy]$ ]] || return 0
|
||||
|
||||
git tag -a "$TAG" -m "Handcrafted v$MOD_VERSION for Fabric $MINECRAFT_VERSION" || return 1
|
||||
if git remote get-url origin >/dev/null 2>&1; then
|
||||
git push origin "$TAG" || { echo "[WARN] Tag lokal dibuat, tetapi push tag gagal."; return 1; }
|
||||
fi
|
||||
echo "[OK] Release tag $TAG selesai."
|
||||
echo "[INFO] JAR release: $JAR_PATH"
|
||||
}
|
||||
|
||||
menu4() {
|
||||
echo
|
||||
echo "============================================"
|
||||
echo " Handcrafted Workflow"
|
||||
echo " Minecraft : $MINECRAFT_VERSION"
|
||||
echo " Version : $MOD_VERSION"
|
||||
echo " JAR : ditemukan"
|
||||
echo "============================================"
|
||||
echo "[1] Push Git"
|
||||
echo "[2] Mod Testing"
|
||||
echo "[3] Make Release"
|
||||
echo "[4] Exit"
|
||||
read -r -p "Pilih: " x
|
||||
case "$x" in
|
||||
1) push_git; after_push ;;
|
||||
2) test_mod; after_test ;;
|
||||
3) make_release; after_release ;;
|
||||
*) exit 0 ;;
|
||||
esac
|
||||
}
|
||||
|
||||
after_push() {
|
||||
while true; do
|
||||
echo; echo "[1] Mod Testing"; echo "[2] Make Release"; echo "[3] Exit"
|
||||
read -r -p "Pilih: " x
|
||||
case "$x" in
|
||||
1) test_mod; after_test; return ;;
|
||||
2) make_release; after_release; return ;;
|
||||
*) exit 0 ;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
after_test() {
|
||||
while true; do
|
||||
echo; echo "[1] Push Git"; echo "[2] Make Release"; echo "[3] Exit"
|
||||
read -r -p "Pilih: " x
|
||||
case "$x" in
|
||||
1) push_git; after_push; return ;;
|
||||
2) make_release; after_release; return ;;
|
||||
*) exit 0 ;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
after_release() {
|
||||
while true; do
|
||||
echo; echo "[1] Push Git"; echo "[2] Mod Testing"; echo "[3] Exit"
|
||||
read -r -p "Pilih: " x
|
||||
case "$x" in
|
||||
1) push_git; after_push; return ;;
|
||||
2) test_mod; after_test; return ;;
|
||||
*) exit 0 ;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
refresh
|
||||
if [[ ! -f "$JAR_PATH" ]]; then
|
||||
echo
|
||||
echo "[INFO] Build $MOD_VERSION belum ditemukan. Compile otomatis..."
|
||||
compile_mod || true
|
||||
fi
|
||||
|
||||
refresh
|
||||
if [[ -f "$JAR_PATH" ]]; then
|
||||
menu4
|
||||
else
|
||||
echo
|
||||
echo "Build belum tersedia."
|
||||
echo "[1] Push Git"
|
||||
echo "[2] Mod Testing"
|
||||
echo "[3] Exit"
|
||||
read -r -p "Pilih: " x
|
||||
case "$x" in
|
||||
1) push_git; after_push ;;
|
||||
2) test_mod; after_test ;;
|
||||
*) exit 0 ;;
|
||||
esac
|
||||
fi
|
||||
Reference in New Issue
Block a user