# Copyright (c) 2022, the Dart project authors.  Please see the AUTHORS file
# for details. All rights reserved. Use of this source code is governed by a
# BSD-style license that can be found in the LICENSE file.

name: Dart CI

on:
  # Run on PRs and pushes to the default branch.
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]
  schedule:
    - cron: "0 0 * * 0"

env:
  PUB_ENVIRONMENT: bot.github

jobs:
  # Check code formatting and static analysis on a single OS (linux)
  # against Dart stable.
  analyze_jni_gen:
    runs-on: ubuntu-latest
    defaults:
      run:
        working-directory: ./pkgs/jni_gen
    strategy:
      fail-fast: false
      matrix:
        sdk: [stable]
    steps:
      - uses: actions/checkout@v2
      - uses: dart-lang/setup-dart@v1.0
        with:
          sdk: ${{ matrix.sdk }}
      - id: install
        name: Install dependencies
        run: dart pub get
      - name: Check formatting
        run: dart format --output=none --set-exit-if-changed .
        if: always() && steps.install.outcome == 'success'
      - name: Analyze code
        run: dart analyze --fatal-infos
        if: always() && steps.install.outcome == 'success'

  test_jni_gen:
    needs: analyze_jni_gen
    runs-on: ${{ matrix.os }}
    defaults:
      run:
        working-directory: ./pkgs/jni_gen
    strategy:
      fail-fast: false
      matrix:
        # Add macos-latest and/or windows-latest if relevant for this package.
        os: [ubuntu-latest]
        sdk: [2.17.0, dev]
    steps:
      - uses: actions/checkout@v2
      - uses: dart-lang/setup-dart@v1.0
        with:
          sdk: stable
      - name: Install dependencies
        run: dart pub get
      - name: Run VM tests
        run: dart test --platform vm
      - name: Install coverage
        run: dart pub global activate coverage
      - name: Collect coverage
        run: dart pub global run coverage:test_with_coverage
      - name: Upload coverage
        uses: coverallsapp/github-action@v1.1.2
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}
          path-to-lcov: ./pkgs/jni_gen/coverage/lcov.info

  build_jni_example_linux:
    runs-on: ubuntu-latest
    defaults:
      run:
        working-directory: ./pkgs/jni/example
    steps:
      - uses: actions/checkout@v3
      - uses: subosito/flutter-action@v2
        with:
          channel: 'stable'
      - run: |
          sudo apt-get update -y
          sudo apt-get install -y ninja-build libgtk-3-dev
      - run: flutter config --enable-linux-desktop
      - run: flutter pub get
      - run: flutter build linux

  build_jni_example_windows:
    runs-on: windows-latest
    defaults:
      run:
        working-directory: ./pkgs/jni/example
    steps:
      - uses: actions/checkout@v3
      - uses: subosito/flutter-action@v2
        with:
          channel: 'stable'
      - run: flutter config --enable-windows-desktop
      - run: flutter pub get
      - run: flutter build windows

  build_jni_example_macos:
    runs-on: macos-latest
    defaults:
      run:
        working-directory: ./pkgs/jni/example
    steps:
      - uses: actions/checkout@v3
      - uses: subosito/flutter-action@v2
        with:
          channel: 'stable'
          architecture: x64
      - run: flutter config --enable-macos-desktop
      - run: flutter pub get
      - run: flutter build macos

  build_jni_example_android:
    runs-on: ubuntu-latest
    defaults:
      run:
        working-directory: ./pkgs/jni/example
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-java@v2
        with:
          distribution: 'zulu'
          java-version: '11'
      - uses: subosito/flutter-action@v2
        with:
          channel: 'stable'
      - run: flutter pub get
      - run: flutter build apk
      - run: flutter build appbundle

