name: "Android CI Actions"

on:
  push:
    branches:
      - "**"
    tags-ignore:
      - "v*" # Ignore tags that start with "v" (e.g. v1.0.0) because they are handled by release-build.yml

jobs:
  release:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Set env
        run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
      - name: Set up JDK 12
        uses: actions/setup-java@v3
        with:
          java-version: '12'
          distribution: 'zulu'
      - uses: subosito/flutter-action@v2
        with:
          channel: 'stable'
      - name: Set environment variables
        run: echo $SECRETS | base64 -d > lib/utils/environment.dart
        env:
          SECRETS: ${{ secrets.SECRETS }}
      - name: Set up Flutter
        run: flutter pub get
      - name: Generate files with Builder
        run: flutter packages pub run build_runner build --delete-conflicting-outputs
      - name: Build with Flutter
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          SIGNING_KEY_ALIAS: ${{ secrets.SIGNING_KEY_ALIAS }}
          SIGNING_KEY_PASSWORD: ${{ secrets.SIGNING_KEY_PASSWORD }}
          SIGNING_STORE_PASSWORD: ${{ secrets.SIGNING_KEYSTORE_PASSWORD }}
        run: flutter build apk
      - name: Sign APK
        id: sign_apk
        uses: ilharp/sign-android-release@v1
        with:
          releaseDir: build/app/outputs/apk/release
          signingKey: ${{ secrets.SIGNING_KEYSTORE }}
          keyStorePassword: ${{ secrets.SIGNING_KEYSTORE_PASSWORD }}
          keyAlias: ${{ secrets.SIGNING_KEY_ALIAS }}
          keyPassword: ${{ secrets.SIGNING_KEY_PASSWORD }}
      - name: Add version to APK
        run: mv ${{ steps.sign_apk.outputs.signedFile }} revanced-manager-${{ env.RELEASE_VERSION }}.apk
      - name: Upload APK
        uses: actions/upload-artifact@v2
        with:
          name: revanced-manager-${{ env.RELEASE_VERSION }}
          path: revanced-manager-${{ env.RELEASE_VERSION }}.apk