name: Flutter

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:
  build:
    runs-on: ubuntu-latest

    # Note that this workflow uses the latest stable version of the Dart SDK.
    # Docker images for other release channels - like dev and beta - are also
    # available. See https://hub.docker.com/r/google/dart/ for the available
    # images.
    #container:
    #  image:  google/dart:latest

    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-java@v1
        with:
          java-version: '12.x'
      - run: echo $SIGNING_KEY | base64 -d > src/ui/flutter_app/android/app/key.jks
        env:
          SIGNING_KEY: ${{ secrets.SIGNING_KEY }}
      - uses: subosito/flutter-action@v1
        with:
          channel: 'stable' # or: 'dev' or 'beta'

      - name: Export environment valiables
        run: export

      - name: Create App version
        run: git fetch --tags; git tag; git log -n1; bash -x ./version.sh

      - name: Print Flutter SDK version
        run: flutter --version

      - name: Install dependencies
        run: cd src/ui/flutter_app; flutter pub get; flutter pub global activate intl_utils; flutter --no-color pub global run intl_utils:generate

      # Uncomment this step to verify the use of 'dart format' on each commit.
      # - name: Verify formatting
      #   run: dart format --output=none --set-exit-if-changed .

      # Your project will need to have tests in test/ and a dependency on
      # package:test for this step to succeed. Note that Flutter projects will
      # want to change this to 'flutter test'.
      #- name: Run tests
      #  run: dart test

      # Build
      - name: Build apk
        run: cd src/ui/flutter_app; flutter build apk; flutter build appbundle
        env:
          KEY_STORE_PASSWORD: ${{ secrets.KEY_STORE_PASSWORD }}
          KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
          ALIAS: ${{ secrets.ALIAS }}
          KEY_PATH: key.jks

      # Archive apk
      - name: Archive apk
        uses: actions/upload-artifact@v2
        with:
          name: sanmill-flutter-apk-release
          path: src/ui/flutter_app/build/app/outputs/flutter-apk/app-release.apk

      # Archive aab
      - name: Archive aab
        uses: actions/upload-artifact@v2
        with:
          name: sanmill-flutter-aab-release
          path: src/ui/flutter_app/build/app/outputs/bundle/release/app-release.aab