# A CI configuration to check PR health.

name: Health

# Callers of this workflow should use it as follows:
#
# name: Health
# on:
#   pull_request:
#     branches: [ main ]
#     types: [opened, synchronize, reopened, labeled, unlabeled]
# jobs:
#   health:
#     uses: dart-lang/ecosystem/.github/workflows/health.yaml@main
#     with:
#       coverage_web: true #If the coverage should run browser tests

# Callers may optionally specify the version of the SDK to use when running the
# health check. This can be useful if your package has a very recent minimum SDK
# constraint. This is done via the `sdk` input parameter. Note that this
# parameter is not required; it defaults to `stable` - using the most recent
# stable release of the Dart SDK.
# 
# The checks can also be restricted to any subset of version, changelog, and license,
# if needed.
#
# jobs:
#   health:
#     uses: dart-lang/ecosystem/.github/workflows/health.yaml@main
#     with:
#       sdk: beta
#       checks: "version,changelog,license,coverage,breaking,do-not-submit"

on:
  workflow_call:
    inputs:
      sdk:
        description: >-
          The channel, or a specific version from a channel, to install
          ('2.19.0','stable', 'beta', 'dev'). Using one of the three channels
          will give you the latest version published to that channel.
        default: "stable"
        required: false
        type: string
      checks:
        description: What to check for in the PR health check - any subset of "version,changelog,license,coverage,breaking,do-not-submit"
        default: "version,changelog,license,coverage,breaking,do-not-submit"
        type: string
        required: false
      local_debug:
        description: Whether to use a local copy of package:firehose - only for debug
        default: false
        type: boolean
        required: false
      upload_coverage:
        description: Whether to upload the coverage to coveralls
        default: true
        type: boolean
        required: false
      coverage_web:
        description: Whether to run `dart test -p chrome` for coverage
        default: false
        type: boolean
        required: false

jobs:
  health:
    # These permissions are required for us to create comments on PRs.
    permissions:
      pull-requests: write

    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744
        with:
          path: current_repo/
      
      - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744
        with:
          ref: ${{ github.event.pull_request.base.ref }}
          path: base_repo/
          
      - uses: dart-lang/setup-dart@d6a63dab3335f427404425de0fbfed4686d93c4f
        with:
          sdk: ${{ inputs.sdk }}

      - name: Install coverage
        run: dart pub global activate coverage

      - name: Install firehose
        run: dart pub global activate firehose
        if:  ${{ !inputs.local_debug }}

      - name: Install api_tool
        run: dart pub global activate --source git https://github.com/bmw-tech/dart_apitool

      - name: Install local firehose
        run: dart pub global activate --source path current_repo/pkgs/firehose/
        if:  ${{ inputs.local_debug }} 

      - name: Check PR health
        if: ${{ github.event_name == 'pull_request' }}
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          ISSUE_NUMBER: ${{ github.event.number }}
          PR_LABELS: "${{ join(github.event.pull_request.labels.*.name) }}"
        run: cd current_repo/ && dart pub global run firehose:health --checks ${{ inputs.checks }} ${{ fromJSON('{"true":"--coverage_web","false":""}')[inputs.coverage_web] }}

      - name: Upload coverage to Coveralls
        if: ${{ inputs.upload_coverage }}
        uses: coverallsapp/github-action@95b1a2355bd0e526ad2fd62da9fd386ad4c98474
        with:
          format: lcov
          base-path: current_repo/
          compare-sha: ${{ github.event.pull_request.base.ref }}
          allow-empty: true

      - name: Save PR number
        run: |
          mkdir -p current_repo/output/ && echo ${{ github.event.number }} > current_repo/output/issueNumber

      - name: Upload folder with number and markdown
        uses: actions/upload-artifact@65d862660abb392b8c4a3d1195a2108db131dd05
        with:
          name: output
          path: current_repo/output/
