# This is a basic workflow to help you get started with Actions

name: geocoding_platform_interface

# Controls when the action will run. Triggers the workflow on push or pull request
# events but only for the main branch
on:
  push:
    branches: [ main ]
    paths:
    - 'geocoding_platform_interface/**'
    - '.github/workflows/geocoding_platform_interface.yaml'

  pull_request:
    branches: [ main ]
    paths:
    - 'geocoding_platform_interface/**'
    - '.github/workflows/geocoding_platform_interface.yaml'

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
  build:
    name: Format

    # The type of runner that the job will run on
    runs-on: ubuntu-latest

    env:
      source-directory: ./geocoding_platform_interface 

    # Steps represent a sequence of tasks that will be executed as part of the job
    steps:
      # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
      - uses: actions/checkout@v4
      
      # Make sure the stable version of Flutter is available
      - uses: subosito/flutter-action@v2
        with:
          channel: 'stable'

      # Download all Flutter packages
      - name: Download dependencies
        run: flutter pub get
        working-directory: ${{env.source-directory}}

      # Run Dart Format to ensure formatting is valid
      - name: Run Dart Format
        run: dart format --set-exit-if-changed .
        working-directory: ${{env.source-directory}}
   
      # Run Flutter Analyzer
      - name: Run Flutter Analyzer
        run: flutter analyze
        working-directory: ${{env.source-directory}}
      
      # Run all unit-tests with code coverage
      - name: Run unit tests
        run: flutter test --coverage
        working-directory: ${{env.source-directory}}