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

name: geocoding

# 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/**'
    - '.github/workflows/geocoding.yaml'

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

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
  format:
    name: App Facing package

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

    env:
      source-directory: ./geocoding 
      example-directory: ./geocoding/example

    # 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'

      # Make sure JAVA version 17 is installed on build agent.
      - uses: actions/setup-java@v4
        with:
          distribution: 'temurin' # See 'Supported distributions' for available options
          java-version: '17'

      # 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}}

      # Build Android version of the example App
      - name: Run Android build
        run: flutter build apk --release
        working-directory: ${{env.example-directory}}

      # Build iOS version of the example App
      - name: Run iOS build
        run: flutter build ios --release --no-codesign
        working-directory: ${{env.example-directory}}

      # Run all unit-tests with code coverage
      - name: Run unit tests
        run: flutter test --coverage
        working-directory: ${{env.source-directory}}