name: Build and test Minestom

on:
  pull_request:
    branches: [ master ]

jobs:
  tests:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Set up JDK 17
      uses: actions/setup-java@v2
      with:
        distribution: 'zulu'
        java-version: 17
    - name: Grant execute permission for gradlew
      run: chmod +x gradlew
    - name: Setup gradle cache
      uses: burrunan/gradle-cache-action@v1
      with:
        save-generated-gradle-jars: false
        save-local-build-cache: false
        save-gradle-dependencies-cache: true
        save-maven-dependencies-cache: true
        # Ignore some of the paths when caching Maven Local repository
        maven-local-ignore-paths: |
          net/minestom/
    - name: Build Minestom
      run: ./gradlew classes testClasses
    - name: Run Minestom tests
      run: ./gradlew test
  publish:
    runs-on: ubuntu-latest
    if: github.repository_owner == 'Minestom'
    env:
      SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }}
      SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
      GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }}
      GPG_PASSPHRASE: ${{ secrets.GPG_PASSWORD }}
    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK 17
        uses: actions/setup-java@v2
        with:
          java-version: '17'
          distribution: 'temurin'
      - name: Set outputs
        id: vars
        run: |
          export ACTUAL=${{ github.event.pull_request.head.sha }}
          echo "short_commit_hash=${ACTUAL::10}" >> $GITHUB_OUTPUT
      - name: Publish to Sonatype
        env:
          MINESTOM_VERSION: ${{ github.head_ref }}-${{ steps.vars.outputs.short_commit_hash }}
          MINESTOM_CHANNEL: snapshot
        run: |
          ./gradlew publishToSonatype closeAndReleaseSonatypeStagingRepository
          echo "Version: ${SHORT_COMMIT_HASH}" >> $GITHUB_STEP_SUMMARY
