diff --git a/.github/workflows/Build-1.20.1.yml b/.github/workflows/Build-1.20.1.yml index dfd3099..8bb711e 100644 --- a/.github/workflows/Build-1.20.1.yml +++ b/.github/workflows/Build-1.20.1.yml @@ -3,7 +3,8 @@ name: Build-1.20.1 on: push: paths: - - 'mod.zip' + - '*.zip' + - 'input/*.zip' workflow_dispatch: jobs: @@ -14,21 +15,37 @@ jobs: - name: Checkout repository uses: actions/checkout@v4 - - name: Unzip mod.zip + - name: Find zip and extract run: | - mkdir -p mod_extracted - unzip mod.zip -d mod_extracted + set -euo pipefail + shopt -s nullglob + zips=( input/*.zip *.zip ) + if [[ ${#zips[@]} -eq 0 ]]; then + echo "ERROR: No .zip file found in input/ or repo root." >&2 + exit 1 + fi + ZIP="${zips[0]}" + echo "Using zip: $ZIP" + mkdir -p work + unzip "$ZIP" -d work - - name: Flatten mod/ subfolder if present + - name: Detect Gradle project root run: | - if [ -d "mod_extracted/mod" ]; then - echo "Found mod/ subfolder – moving its contents up" - shopt -s dotglob - mv mod_extracted/mod/* mod_extracted/ - rmdir mod_extracted/mod - else - echo "No mod/ subfolder found – keeping files as-is" + set -euo pipefail + PROJECT_ROOT="" + for gradle_file in settings.gradle settings.gradle.kts build.gradle build.gradle.kts; do + found=$(find work -maxdepth 4 -name "$gradle_file" | sort | head -1) + if [[ -n "$found" ]]; then + PROJECT_ROOT=$(dirname "$found") + echo "Detected project root via $gradle_file: $PROJECT_ROOT" + break + fi + done + if [[ -z "$PROJECT_ROOT" ]]; then + echo "ERROR: No Gradle project root found after extraction." >&2 + exit 1 fi + echo "PROJECT_ROOT=$PROJECT_ROOT" >> "$GITHUB_ENV" - name: Set up Java 17 uses: actions/setup-java@v4 @@ -42,11 +59,18 @@ jobs: gradle-version: '8.8' - name: Build mod with Gradle - working-directory: mod_extracted - run: gradle build + run: | + set -euo pipefail + if ! command -v gradle &>/dev/null; then + echo "ERROR: gradle command not available." >&2 + exit 1 + fi + gradle --version + cd "$PROJECT_ROOT" + gradle build --no-daemon - name: Upload built mod artifact uses: actions/upload-artifact@v4 with: name: mod-build - path: mod_extracted/build/libs/*.jar + path: ${{ env.PROJECT_ROOT }}/build/libs/*.jar diff --git a/.github/workflows/Build-1.21.11.yml b/.github/workflows/Build-1.21.11.yml index 94d4ebf..53082c4 100644 --- a/.github/workflows/Build-1.21.11.yml +++ b/.github/workflows/Build-1.21.11.yml @@ -3,7 +3,8 @@ name: Build-1.21.11 on: push: paths: - - 'mod.zip' + - '*.zip' + - 'input/*.zip' workflow_dispatch: jobs: @@ -14,21 +15,37 @@ jobs: - name: Checkout repository uses: actions/checkout@v4 - - name: Unzip mod.zip + - name: Find zip and extract run: | - mkdir -p mod_extracted - unzip mod.zip -d mod_extracted + set -euo pipefail + shopt -s nullglob + zips=( input/*.zip *.zip ) + if [[ ${#zips[@]} -eq 0 ]]; then + echo "ERROR: No .zip file found in input/ or repo root." >&2 + exit 1 + fi + ZIP="${zips[0]}" + echo "Using zip: $ZIP" + mkdir -p work + unzip "$ZIP" -d work - - name: Flatten mod/ subfolder if present + - name: Detect Gradle project root run: | - if [ -d "mod_extracted/mod" ]; then - echo "Found mod/ subfolder – moving its contents up" - shopt -s dotglob - mv mod_extracted/mod/* mod_extracted/ - rmdir mod_extracted/mod - else - echo "No mod/ subfolder found – keeping files as-is" + set -euo pipefail + PROJECT_ROOT="" + for gradle_file in settings.gradle settings.gradle.kts build.gradle build.gradle.kts; do + found=$(find work -maxdepth 4 -name "$gradle_file" | sort | head -1) + if [[ -n "$found" ]]; then + PROJECT_ROOT=$(dirname "$found") + echo "Detected project root via $gradle_file: $PROJECT_ROOT" + break + fi + done + if [[ -z "$PROJECT_ROOT" ]]; then + echo "ERROR: No Gradle project root found after extraction." >&2 + exit 1 fi + echo "PROJECT_ROOT=$PROJECT_ROOT" >> "$GITHUB_ENV" - name: Set up Java 21 uses: actions/setup-java@v4 @@ -42,11 +59,18 @@ jobs: gradle-version: '9.2.0' - name: Build mod with Gradle - working-directory: mod_extracted - run: gradle build + run: | + set -euo pipefail + if ! command -v gradle &>/dev/null; then + echo "ERROR: gradle command not available." >&2 + exit 1 + fi + gradle --version + cd "$PROJECT_ROOT" + gradle build --no-daemon - name: Upload built mod artifact uses: actions/upload-artifact@v4 with: name: mod-build - path: mod_extracted/build/libs/*.jar + path: ${{ env.PROJECT_ROOT }}/build/libs/*.jar diff --git a/.github/workflows/Build-26.1.yml b/.github/workflows/Build-26.1.yml index cfdcdcd..63b6bea 100644 --- a/.github/workflows/Build-26.1.yml +++ b/.github/workflows/Build-26.1.yml @@ -3,7 +3,8 @@ name: Build-26.1 on: push: paths: - - 'mod.zip' + - '*.zip' + - 'input/*.zip' workflow_dispatch: jobs: @@ -14,21 +15,37 @@ jobs: - name: Checkout repository uses: actions/checkout@v4 - - name: Unzip mod.zip + - name: Find zip and extract run: | - mkdir -p mod_extracted - unzip mod.zip -d mod_extracted + set -euo pipefail + shopt -s nullglob + zips=( input/*.zip *.zip ) + if [[ ${#zips[@]} -eq 0 ]]; then + echo "ERROR: No .zip file found in input/ or repo root." >&2 + exit 1 + fi + ZIP="${zips[0]}" + echo "Using zip: $ZIP" + mkdir -p work + unzip "$ZIP" -d work - - name: Flatten mod/ subfolder if present + - name: Detect Gradle project root run: | - if [ -d "mod_extracted/mod" ]; then - echo "Found mod/ subfolder – moving its contents up" - shopt -s dotglob - mv mod_extracted/mod/* mod_extracted/ - rmdir mod_extracted/mod - else - echo "No mod/ subfolder found – keeping files as-is" + set -euo pipefail + PROJECT_ROOT="" + for gradle_file in settings.gradle settings.gradle.kts build.gradle build.gradle.kts; do + found=$(find work -maxdepth 4 -name "$gradle_file" | sort | head -1) + if [[ -n "$found" ]]; then + PROJECT_ROOT=$(dirname "$found") + echo "Detected project root via $gradle_file: $PROJECT_ROOT" + break + fi + done + if [[ -z "$PROJECT_ROOT" ]]; then + echo "ERROR: No Gradle project root found after extraction." >&2 + exit 1 fi + echo "PROJECT_ROOT=$PROJECT_ROOT" >> "$GITHUB_ENV" - name: Set up Java 25 uses: actions/setup-java@v4 @@ -42,11 +59,18 @@ jobs: gradle-version: '9.4.1' - name: Build mod with Gradle - working-directory: mod_extracted - run: gradle build + run: | + set -euo pipefail + if ! command -v gradle &>/dev/null; then + echo "ERROR: gradle command not available." >&2 + exit 1 + fi + gradle --version + cd "$PROJECT_ROOT" + gradle build --no-daemon - name: Upload built mod artifact uses: actions/upload-artifact@v4 with: name: mod-build - path: mod_extracted/build/libs/*.jar + path: ${{ env.PROJECT_ROOT }}/build/libs/*.jar