name: Check PR code
on:
  pull_request:
    branches:
      - master

jobs:
  BuildAndTestAndCoverage:
    runs-on: ubuntu-latest
    steps:
      - name: Check out repository code
        uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - name: Fetch tags
        run: git fetch --tags -p
      - uses: actions/setup-java@v4
        with:
          distribution: 'temurin'
          java-version: '17'
      - uses: gradle/actions/setup-gradle@v3
      - uses: android-actions/setup-android@v3
      - name: Configure gradle...
        run: mkdir -p ~/.gradle && echo "ignoreGitVersion=true" >> ~/.gradle/gradle.properties
      - uses: KengoTODA/actions-setup-docker-compose@v1
        with:
          version: "2.23.3"
      - name: run selfoss
        run: |
          docker compose -f .gitea/workflows/assets/docker-compose.yml up -d
      - name: Change url until I find a better way to do it
        run: |
          sed -i "s/val defaultUrl = \"http:\/\/10\.0\.2\.2\:8888\"/val defaultUrl = \"http:\/\/172\.17\.0\.1\:8888\"/g" ./androidApp/src/androidTest/kotlin/bou/amine/apps/readerforselfossv2/android/CommonTests.kt
      - name: Tests
        uses: reactivecircus/android-emulator-runner@v2
        with:
          api-level: 29
          profile: pixel_2
          script: |
            ./gradlew androidApp:clearScreenshotsTask || true
            ./gradlew androidApp:createScreenshotDirectory
            adb logcat -G 16M
            ./gradlew JacocoDebugCodeCoverage || true
            ./gradlew androidApp:fetchScreenshots
            adb logcat 'InputReader:S' 'chatty:S' 'audio_hw_generic:S' 'LogApiCalls:D' '*:I' -d > ./androidApp/build/reports/androidTests/connected/screenshots/logs.txt
      - uses: actions/upload-artifact@v3
        if: always()
        with:
          name: screenshot-espresso
          path: androidApp/build/reports/androidTests/connected/screenshots
          retention-days: 2
          overwrite: true
          include-hidden-files: true
      - uses: actions/upload-artifact@v3
        if: always()
        with:
          name: result-espresso
          path: androidApp/build/reports/androidTests/connected/debug/flavors/githubConfig
          retention-days: 1
          overwrite: true
          include-hidden-files: true
      - uses: actions/upload-artifact@v3
        with:
          name: coverage-espresso
          path: androidApp/build/reports/jacoco/JacocoDebugCodeCoverage
          retention-days: 1
          overwrite: true
          include-hidden-files: true
      - name: Clean
        if: always()
        run: |
          docker compose -f .gitea/workflows/assets/docker-compose.yml stop

#  Lint:
#    runs-on: ubuntu-latest
#    steps:
#      - name: Check out repository code
#        uses: actions/checkout@v4
#      - uses: actions/setup-java@v4
#        with:
#          distribution: 'temurin'
#          java-version: '17'
#          cache: gradle
#      - name: Install klint
#        run: curl -sSLO https://github.com/pinterest/ktlint/releases/download/1.5.0/ktlint && chmod a+x ktlint && mv ktlint /usr/local/bin/
#      - name: Install detekt
#        run: curl -sSLO https://github.com/detekt/detekt/releases/download/v1.23.7/detekt-cli-1.23.7.zip && unzip detekt-cli-1.23.7.zip
#      - name: Linting...
#        run: ktlint 'shared/**/*.kt' 'androidApp/**/*.kt' '!shared/build'
#      - name: Detecting...
#        run: ./detekt-cli-1.23.7/bin/detekt-cli -c detekt.yml --excludes '**/shared/build/**/*.kt'
#  translations:
#    runs-on: ubuntu-latest
#    steps:
#      - name: Check out repository code
#        uses: actions/checkout@v4
#        with:
#          fetch-depth: 0
#      - name: "Check translations changes"
#        id: check-translations-changes
#        uses: tj-actions/changed-files@v45
#        with:
#          files: |
#            androidApp/src/main/res/values/strings.xml
#      - name: upload translation sources
#        if: steps.check-api-changes.outputs.any_modified == 'true'
#        uses: crowdin/github-action@v2
#        with:
#          config: './.gitea/workflows/assets/crowdin.yml'
#          upload_sources: true
#          upload_translations: false
#          download_translations: false
#          create_pull_request: false
#          push_translations: false
#        env:
#          CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }}
#          CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
#      - name: wait
#        if: steps.check-api-changes.outputs.any_modified == 'true'
#        run: sleep 10s
#      - name: download translations
#        if: steps.check-api-changes.outputs.any_modified == 'true'
#        uses: crowdin/github-action@v2
#        with:
#          config: './.gitea/workflows/assets/crowdin.yml'
#          upload_sources: false
#          upload_translations: false
#          download_translations: true
#          create_pull_request: false
#          push_translations: false
#        env:
#          CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }}
#          CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
#      - name: Check for uncommitted changes
#        if: steps.check-api-changes.outputs.any_modified == 'true'
#        id: check-changes
#        uses: mskri/check-uncommitted-changes-action@v1.0.1
#      - name: Commit Changes
#        if: steps.check-api-changes.outputs.any_modified == 'true' && steps.check-changes.outputs.changes != ''
#        run: |
#          git config --global user.email aminecmi+giteadrone@pm.me
#          git config --global user.name giteadrone
#          git add ./androidApp/src/main/res/*
#          git commit -m "translation: translation files"
#      - name: Push changes
#        if: steps.check-api-changes.outputs.any_modified == 'true' && steps.check-changes.outputs.changes != ''
#        uses: appleboy/git-push-action@v1.0.0
#        with:
#          author_name: giteadrone
#          author_email: aminecmi+giteadrone@pm.me
#          remote: ${{ secrets.REMOTE_URL }}
#          ssh_key: ${{ secrets.PRIVATE_KEY }}
#          branch: ${{ github.head_ref || github.ref_name }}
#  build:
#    needs: Lint
#    uses: ./.gitea/workflows/common_build.yml