# name must be identical to name of 'pull-request-without-code'
name: Pull request
permissions:
  contents: read

on:
  push:
    branches: ['master']
    paths:
      - '**/*.kt'
      - '**/*.kts'
      - '**/*.properties'
      - '**/*.toml'
  pull_request:
    paths:
      - '**/*.kt'
      - '**/*.kts'
      - '**/*.properties'
      - '**/*.toml'
  workflow_dispatch:

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: ${{ github.ref != 'refs/heads/master' }}

env:
  ORG_GRADLE_PROJECT_signingInMemoryKey: ${{ secrets.ORG_GRADLE_PROJECT_SIGNINGKEY }}
  ORG_GRADLE_PROJECT_signingInMemoryKeyId: ${{ secrets.ORG_GRADLE_PROJECT_SIGNINGKEYID }}
  ORG_GRADLE_PROJECT_signingInMemoryKeyPassword: ${{ secrets.ORG_GRADLE_PROJECT_SIGNINGPASSWORD }}
  CLI_TEST_MAX_DURATION_IN_SECONDS: 10

# Note that all "jobs" (build, tests) including "jobs.*.runs-on" should be kept in sync with "pull-request-without-code"
jobs:
  build:
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest]
    runs-on: ${{ matrix.os }}
    name: "[build] OS=${{ matrix.os }} Kotlin=stable"
    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6

      - uses: ./.github/actions/setup-gradle-build

      - name: Build with release Kotlin version
        run: ./gradlew ktlintCheck build

      - name: Check `data class`es are not part of public API
        run: |
          found=0

          # Loop through all .api files in the current directory and subdirectories
          for file in $(find . -type f -name "*.api" ! -path "*/build/*"); do
              # Check if the file contains the 'data class' specific text
              if grep -q "public static synthetic fun copy$default" "$file"; then
                  echo "public 'data class' found in: $file"
                  found=1
              fi
          done

          if [ $found -eq 0 ]; then
              exit 0
          else
              echo "data classes found in one or more .api files. Visit https://github.com/pinterest/ktlint/issues/2133 for more details"
              exit 1
          fi
        shell: bash

  build-dev:
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest]
    runs-on: ${{ matrix.os }}
    name: "[build] OS=${{ matrix.os }}, Kotlin=dev"
    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6

      - uses: ./.github/actions/setup-gradle-build

      - name: Build with assemble Kotlin version
        run: ./gradlew -PkotlinDev ktlintCheck build

  tests:
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest, windows-latest]
        jdk: [8, 11, 17, 21] # list of Java versions (usually only LTS versions) to run tests against (excluding `java-compilation` version for which tests already have run during `build` job)
    runs-on: ${{ matrix.os }}
    name: "[tests] OS=${{ matrix.os }}, Java=${{ matrix.jdk }}"
    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6

      - uses: ./.github/actions/setup-gradle-build
        with:
          additional-java-versions: ${{ matrix.jdk }}

      - run: ./gradlew testOnJdk${{ matrix.jdk }} -PtestJdkVersion=${{ matrix.jdk }}
