name: Android CI

env:
  # The name of the main module repository
  main_project_module: app

permissions:
  contents: write # for deleting/creating a pre-release

on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4

    - name: set up JDK 17
      uses: actions/setup-java@v4
      with:
        java-version: 17
        distribution: 'corretto'
        cache: 'gradle'

    - name: Create base64 jks file
      run: echo "${{ secrets.BASE_64_SIGNING_KEY }}" > app/release_keystore.txt
    - name: Create jks file
      run: base64 -d "app/release_keystore.txt" > app/release_keystore.jks
    - name: Create Blank Local Properties FIle
      run: touch local.properties
    - name: Create Keystore Properties File
      run: echo "${{ secrets.LOCAL_PROPERTIES }}" > keystore.properties
    - name: Grant execute permission for gradlew
      run: chmod +x gradlew

    - name: Set current date as env variable
      run: echo "date_today=$(date +'%Y-%m-%d')" >> $GITHUB_ENV
     # Create APK Debug
    - name: Build apk debug project (APK)
      run: ./gradlew assembleDebug
    # Create APK Release
    - name: Build apk release project (APK)
      run: ./gradlew assemble

   # Upload Artifact Build
    # Noted For Output [main_project_module]/build/outputs/apk/debug/
    - name: Find Debug arm64
      run: echo "APK_PATH=$(find ${{ env.main_project_module }}/build/outputs/apk/debug/ -type f -name '*arm64*.apk')" >> $GITHUB_ENV

    - name: Upload APK Debug arm64
      uses: actions/upload-artifact@v4
      with:
        name: ytdlnis-autogenerated-arm64-v8a-debug
        path: ${{ env.APK_PATH }}

    - name: Find Debug armeabiv7
      run: echo "APK_PATH=$(find ${{ env.main_project_module }}/build/outputs/apk/debug/ -type f -name '*armeabi*.apk')" >> $GITHUB_ENV

    - name: Upload APK Debug armeabiv7
      uses: actions/upload-artifact@v4
      with:
        name: ytdlnis-autogenerated-armeabi-v7a-debug
        path: ${{ env.APK_PATH }}

    - name: Find Debug universal
      run: echo "APK_PATH=$(find ${{ env.main_project_module }}/build/outputs/apk/debug/ -type f -name '*universal*.apk')" >> $GITHUB_ENV

    - name: Upload APK Debug universal
      uses: actions/upload-artifact@v4
      with:
        name: ytdlnis-autogenerated-universal-debug
        path: ${{ env.APK_PATH }}

    - name: Find Debug x86
      run: echo "APK_PATH=$(find ${{ env.main_project_module }}/build/outputs/apk/debug/ -type f -name '*x86-*.apk')" >> $GITHUB_ENV

    - name: Upload APK Debug x86
      uses: actions/upload-artifact@v4
      with:
        name: ytdlnis-autogenerated-x86-debug
        path: ${{ env.APK_PATH }}

    - name: Find Debug x86_64
      run: echo "APK_PATH=$(find ${{ env.main_project_module }}/build/outputs/apk/debug/ -type f -name '*x86_64*.apk')" >> $GITHUB_ENV

    - name: Upload APK Debug x86_64
      uses: actions/upload-artifact@v4
      with:
        name: ytdlnis-autogenerated-x86_64-debug
        path: ${{ env.APK_PATH }}

    # Noted For Output [main_project_module]/build/outputs/apk/release/
    - name: Find Release arm64
      run: echo "APK_PATH=$(find ${{ env.main_project_module }}/build/outputs/apk/release/ -type f -name '*arm64*.apk')" >> $GITHUB_ENV

    - name: Upload APK Release arm64
      uses: actions/upload-artifact@v4
      with:
        name: ytdlnis-autogenerated-arm64-v8a-release
        path: ${{ env.APK_PATH }}

    - name: Find Release armeabiv7
      run: echo "APK_PATH=$(find ${{ env.main_project_module }}/build/outputs/apk/release/ -type f -name '*armeabi*.apk')" >> $GITHUB_ENV

    - name: Upload APK Release armeabiv7
      uses: actions/upload-artifact@v4
      with:
        name: ytdlnis-autogenerated-armeabi-v7a-release
        path: ${{ env.APK_PATH }}

    - name: Find Release universal
      run: echo "APK_PATH=$(find ${{ env.main_project_module }}/build/outputs/apk/release/ -type f -name '*universal*.apk')" >> $GITHUB_ENV

    - name: Upload APK Release universal
      uses: actions/upload-artifact@v4
      with:
        name: ytdlnis-autogenerated-universal-release
        path: ${{ env.APK_PATH }}

    - name: Find Release x86
      run: echo "APK_PATH=$(find ${{ env.main_project_module }}/build/outputs/apk/release/ -type f -name '*x86-*.apk')" >> $GITHUB_ENV

    - name: Upload APK Release x86
      uses: actions/upload-artifact@v4
      with:
        name: ytdlnis-autogenerated-x86-release
        path: ${{ env.APK_PATH }}

    - name: Find Release x86_64
      run: echo "APK_PATH=$(find ${{ env.main_project_module }}/build/outputs/apk/release/ -type f -name '*x86_64*.apk')" >> $GITHUB_ENV

    - name: Upload APK Release x86_64
      uses: actions/upload-artifact@v4
      with:
        name: ytdlnis-autogenerated-x86_64-release
        path: ${{ env.APK_PATH }}

    # Noted For Output [main_project_module]/build/outputs/apk/debug/
    - name: Upload APK Debug
      uses: actions/upload-artifact@v4
      with:
        name: YTDLnis APK debug generated
        path: ${{ env.main_project_module }}/build/outputs/apk/debug/

    # Noted For Output [main_project_module]/build/outputs/apk/release/
    - name: Upload APK Release
      uses: actions/upload-artifact@v4
      with:
        name: YTDLnis APK release generated
        path: ${{ env.main_project_module }}/build/outputs/apk/release/

   # Send Message To Telegram
    - name: send telegram message on push or pull
      continue-on-error: true
      uses: appleboy/telegram-action@master
      with:
        to: ${{ secrets.TELEGRAM_TO }}
        token: ${{ secrets.TELEGRAM_TOKEN }}
        message: |
          ${{ github.actor }} created commit:
          Commit message: ${{ github.event.commits[0].message }}
          Repository: ${{ github.repository }}
          See changes: https://github.com/${{ github.repository }}/commit/${{github.sha}}

#      # Start Creating Pre-Release
#    - name: Start Pre-Release
#      uses: actions/checkout@v4
#      with:
#        persist-credentials: false
#    # returns null if no pre-release exists
#    - name: Get Commit SHA of Latest Pre-release
#      run: |
#        # Install Required Packages
#        sudo apt-get updated
#        sudo apt-get install -y curl jq
#        echo "COMMIT_SHA_TAG=$(jq -r 'map(select(.prerelease)) | first | .tag_name' <<< $(curl -s https://api.github.com/repos/deniscerri/ytdlnis/releases))" >> $GITHUB_ENV
#
#    - run: gh release delete ${{ env.COMMIT_SHA_TAG }} --cleanup-tag
#      if: (env.COMMIT_SHA_TAG != 'null' && contains('Auto-Release', env.COMMIT_SHA_TAG))
#      env:
#        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
#
#    # Make sure that an old ci that still runs on main doesn't recreate a prerelease
#    - name: Check Pullable Commits
#      id: check_commits
#      run: |
#        git fetch
#        CHANGES=$(git rev-list HEAD..origin/main --count)
#        echo "CHANGES=$CHANGES" >> $GITHUB_ENV
#
#    - name: Get Release Name
#      id: get_last_release_tag
#      run: |
#        LASTRELEASE=$(curl "https://api.github.com/repos/deniscerri/ytdlnis/releases/latest")
#        ISPRERELEASE=$(echo $LASTRELEASE | jq -r '.prerelease')
#        NEWRELEASENAME=$(echo $LASTRELEASE | jq -r '.name')
#        if ! $ISPRERELEASE; then NEWRELEASENAME=$(echo $NEWRELEASENAME'.1'); else NEWRELEASENAME=$(echo $NEWRELEASENAME | sed -E 's/(.*\.)([0-9]+)$/echo "\1$((\2 + 1))"/e'); fi
#        echo "NEWRELEASENAME=$NEWRELEASENAME" >> $GITHUB_ENV
#
#    - name: Get last commit SHA
#      id: last_commit
#      run: echo "COMMIT_SHA=$(git rev-parse HEAD | cut -c 1-8)" >> $GITHUB_ENV
#
#    - name: Get commmit date
#      id: commit_date
#      run: echo "COMMIT_DATE=$(git show -s --date=format:'%Y%m%d' --format=%cd HEAD)" >> $GITHUB_ENV
#
#
#    # Create a new pre-release, the other upload_binaries.yml will upload the binaries
#    # to this pre-release.
#    - name: Create Prerelease
#      if: github.ref.name == 'main' && env.CHANGES == '0'
#      uses: softprops/action-gh-release@4634c16e79c963813287e889244c50009e7f0981
#      with:
#        name: ${{ env.NEWRELEASENAME }} [Auto-Release] [${{ env.COMMIT_DATE }}-${{ env.COMMIT_SHA }}]
#        tag_name: v${{ env.NEWRELEASENAME }}-beta
#        body: ${{ github.event.commits[0].message }}
#        prerelease: true
#        files: |
#          ${{ env.main_project_module }}/build/outputs/apk/release/*
#          ${{ env.main_project_module }}/build/outputs/apk/debug/*

