name: Samples Kotlin client

on:
  push:
    branches:
      - 'samples/client/petstore/kotlin*/**'
  pull_request:
    paths:
      - 'samples/client/petstore/kotlin*/**'

env:
  GRADLE_VERSION: 6.9

jobs:
  build:
    name: Build Kotlin client
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        sample:
          # client
          - samples/client/petstore/kotlin
          - samples/client/petstore/kotlin-gson
          - samples/client/petstore/kotlin-jackson
          # needs Android configured
          #- samples/client/petstore/kotlin-json-request-string
          - samples/client/petstore/kotlin-jvm-okhttp4-coroutines
          - samples/client/petstore/kotlin-jvm-volley
          - samples/client/petstore/kotlin-moshi-codegen
          - samples/client/petstore/kotlin-multiplatform
          - samples/client/petstore/kotlin-nonpublic
          - samples/client/petstore/kotlin-nullable
          - samples/client/petstore/kotlin-okhttp3
          - samples/client/petstore/kotlin-retrofit2
          - samples/client/petstore/kotlin-retrofit2-kotlinx_serialization
          - samples/client/petstore/kotlin-retrofit2-rx3
          - samples/client/petstore/kotlin-string
          - samples/client/petstore/kotlin-threetenbp
          - samples/client/petstore/kotlin-uppercase-enum
          - samples/client/petstore/kotlin-default-values-jvm-okhttp3
          - samples/client/petstore/kotlin-default-values-jvm-okhttp4
          - samples/client/petstore/kotlin-default-values-jvm-retrofit2
          - samples/client/petstore/kotlin-default-values-jvm-volley
          - samples/client/petstore/kotlin-default-values-multiplatform
          - samples/client/petstore/kotlin-array-simple-string-jvm-okhttp3
          - samples/client/petstore/kotlin-array-simple-string-jvm-okhttp4
          - samples/client/petstore/kotlin-array-simple-string-jvm-volley
          - samples/client/petstore/kotlin-array-simple-string-multiplatform
          - samples/client/petstore/kotlin-bigdecimal-default-multiplatform
          - samples/client/petstore/kotlin-bigdecimal-default-okhttp4
          - samples/client/petstore/kotlin-jvm-ktor-jackson
          - samples/client/petstore/kotlin-jvm-ktor-gson
          - samples/client/petstore/kotlin-jvm-ktor-kotlinx_serialization
          - samples/client/petstore/kotlin-jvm-vertx-gson
          - samples/client/petstore/kotlin-jvm-vertx-jackson
          - samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines
          - samples/client/petstore/kotlin-jvm-vertx-moshi
          - samples/client/petstore/kotlin-jvm-spring-2-webclient
          - samples/client/petstore/kotlin-jvm-spring-3-webclient
          - samples/client/petstore/kotlin-spring-cloud
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-java@v3
        with:
          distribution: 'temurin'
          java-version: 8
      - name: Cache maven dependencies
        uses: actions/cache@v3
        env:
          cache-name: maven-repository
        with:
          path: |
            ~/.gradle
          key: ${{ runner.os }}-${{ github.job }}-${{ env.cache-name }}-${{ hashFiles('**/pom.xml') }}
      - name: Install Gradle wrapper
        uses: eskatos/gradle-command-action@v2
        with:
          gradle-version: ${{ env.GRADLE_VERSION }}
          build-root-directory: ${{ matrix.sample }}
          arguments: wrapper
      - name: Build
        working-directory: ${{ matrix.sample }}
        run: ./gradlew build -x test
