name: Create tag
on:
  push:
    branches:
      - release
  workflow_dispatch:

jobs:
  build:
    uses: ./.gitea/workflows/common_build.yml
  createTagAndChangelog:
    runs-on: ubuntu-latest
    needs: build
    steps:
      - name: Check out repository code
        uses: actions/checkout@v4
        with:
          fetch-depth: 0
          ref: master
      - name: Config git
        run: |
          git config --global user.email aminecmi+giteadrone@pm.me
          git config --global user.name giteadrone
      - name: Creating the tag and generate changelog
        run: |
          git fetch --tags -p
          PREV=$(git describe --tags --abbrev=0)
          ./build.sh --publish --from-ci
          VER=$(git describe --tags --abbrev=0)
          CHANGELOG=$(git log $PREV..HEAD --pretty="- %s")
          echo "**$VER
          
          $CHANGELOG
          
          --------------------------------------------------------------------
          
          $(cat CHANGELOG.md)" > CHANGELOG.md
          git add CHANGELOG.md
          touch ./fastlane/metadata/android/en\-US/changelogs/$VER.txt
          echo "**$VER**
          
          $CHANGELOG" > ./fastlane/metadata/android/en\-US/changelogs/$VER.txt
          git add ./fastlane/metadata/android/en\-US/changelogs/$VER.txt
          git commit -m "Changelog for $VER"
      - name: Push changes
        uses: appleboy/git-push-action@v1.0.0
        with:
          author_name: giteadrone
          author_email: aminecmi+giteadrone@pm.me
          remote: ${{ secrets.REMOTE_URL }}
          followtags: true
          ssh_key: ${{ secrets.PRIVATE_KEY }}
          tags: true
          branch: master
      - name: copy file via ssh password
        uses: appleboy/scp-action@v0.1.7
        with:
          host: amine-bouabdallaoui.fr
          username: ubuntu
          key: ${{ secrets.PRIVATE_KEY }}
          source: "version.txt"
          target: "/home/ubuntu/"
      - name: deploy version file
        uses: appleboy/ssh-action@v1.2.0
        with:
          host: amine-bouabdallaoui.fr
          username: ubuntu
          key: ${{ secrets.PRIVATE_KEY }}
          script: cd /home/ubuntu && sudo rm -rf /var/www/amine/version.txt && sudo chown www-data:www-data ./version.txt && sudo mv version.txt /var/www/amine/
  release:
    runs-on: ubuntu-latest
    needs: createTagAndChangelog
    steps:
      - name: Check out repository code
        uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - name: Fetch tags
        id: version
        run: |
          git fetch --tags -p
          PREV=$(git describe --tags --abbrev=0)
          echo $PREV
          echo "VERSION=$PREV" >> $GITHUB_OUTPUT
      - uses: actions/setup-java@v4
        with:
          distribution: 'temurin'
          java-version: '17'
          cache: gradle
      - name: Setup Android SDK
        uses: android-actions/setup-android@v3
      - name: Configure gradle...
        run: mkdir -p ~/.gradle && echo "org.gradle.daemon=false\nignoreGitVersion=false\nsystemProp.org.gradle.internal.http.connectionTimeout=180000\nsystemProp.org.gradle.internal.http.socketTimeout=180000" >> ~/.gradle/gradle.properties
      - name: setup go
        uses: https://github.com/actions/setup-go@v4
        with:
          go-version: '>=1.20.1'
      - name: Generate APK
        run: ./gradlew :androidApp:assembleGithubConfigRelease
      - name: Get Key
        run: wget ${{ secrets.KEY_URL }}
      - name: Zippalign
        run: |
          sdkmanager "build-tools;31.0.0"
          ls $ANDROID_HOME/build-tools 
          $ANDROID_HOME/build-tools/31.0.0/zipalign -f -v 4 androidApp/build/outputs/apk/githubConfig/release/androidApp-githubConfig-release-unsigned.apk androidApp/build/outputs/apk/githubConfig/release/android-prod-released-ziped.apk
      - name: Sigh
        run: $ANDROID_HOME/build-tools/31.0.0/apksigner sign -v --out signed.apk --ks ./key --ks-key-alias ${{ secrets.KEY_ALIAS }} --ks-pass pass:${{ secrets.KEYSTORE_PASSWORD }} --v1-signing-enabled true --v2-signing-enabled true androidApp/build/outputs/apk/githubConfig/release/android-prod-released-ziped.apk
      - name: Verify
        run: $ANDROID_HOME/build-tools/31.0.0/apksigner verify signed.apk
      - name: Release
        uses: https://gitea.com/actions/gitea-release-action@main
        with:
          files: signed.apk
          token: ${{ secrets.API_KEY }}
          tag_name: ${{ steps.version.outputs.VERSION }}
          name: ${{ steps.version.outputs.VERSION }}
      - name: Send mail
        uses: https://github.com/dawidd6/action-send-mail@v4
        with:
          connection_url: ${{ secrets.MAIL_CONNECTION }}
          to: ${{ secrets.MAIL_TO }}
          from: ${{ secrets.MAIL_FROM }}
          subject: Mapping file
          priority: high
          convert_markdown: true
          body: Nouveau fichier de mapping pour la version ${{ steps.version.outputs.VERSION }}
          attachments: androidApp/build/outputs/mapping/githubConfigRelease/mapping.txt