name: Build (Linux, Mac OS, Windows)

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

jobs:
  build-linux:
    name: "Build Linux"
    runs-on: ubuntu-latest
    env:
      GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

    steps:
      - uses: actions/checkout@v2.3.4

      - name: Setup Flutter SDK
        uses: subosito/flutter-action@v1.5.3
        with:
          channel: "stable"
          flutter-version: "3.0.5"

      - name: Install Linux build tools
        run: sudo apt-get update && sudo apt-get install clang cmake ninja-build pkg-config libgtk-3-dev

      - name: Enable desktop
        run: flutter config --enable-linux-desktop

      - name: Get packages
        run: flutter pub get

      - name: Analyze
        run: flutter analyze

      - name: Flutter build app
        run: flutter build linux
        
  build-macos:
    name: "Build MacOS"
    runs-on: macos-latest
    env:
      GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

    steps:
      - uses: actions/checkout@v2.3.4

      - name: Setup Flutter SDK
        uses: subosito/flutter-action@v1.5.3
        with:
          channel: "stable"
          flutter-version: "3.0.5"

      - name: Set Up XCode
        uses: devbotsxyz/xcode-select@v1.1.0

      - name: Enable desktop
        run: flutter config --enable-macos-desktop

      - name: Get packages
        run: flutter pub get

      - name: Analyze
        run: flutter analyze

      - name: Flutter build app
        run: flutter build macos

  build-windows:
    name: "Build Windows"
    runs-on: windows-latest
    env:
      GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

    steps:
      - uses: actions/checkout@v2.3.4

      - name: Setup Flutter SDK
        uses: subosito/flutter-action@v1.5.3
        with:
          channel: "stable"
          flutter-version: "3.0.5"

      - name: Enable desktop
        run: flutter config --enable-windows-desktop

      - name: Get packages
        run: flutter pub get

      - name: Analyze
        run: flutter analyze

      - name: Flutter build app
        run: flutter build windows