name: 'Lint C/C++ with clang-format'

on: 
  push:
    branches:
      - dev
      - "release*"
    tags:
      - '*'
  pull_request:

env:
  TARGETS: f7

jobs:
  lint_c_cpp:
    runs-on: [self-hosted,FlipperZero]
    steps:
      - name: 'Cleanup workspace'
        uses: AutoModality/action-clean@v1

      - name: 'Decontaminate previous build leftovers'
        run: |
          if [ -d .git ]
          then
            git submodule status \
              || git checkout `git rev-list --max-parents=0 HEAD | tail -n 1`
          fi

      - name: 'Checkout code'
        uses: actions/checkout@v2
        with:
          fetch-depth: 0
          submodules: true

      - name: 'Docker cache'
        uses: satackey/action-docker-layer-caching@v0.0.11
        continue-on-error: true
        with:
          key: docker-cache-${{ hashFiles('docker/**') }}-{hash}
          restore-keys: docker-cache-${{ hashFiles('docker/**') }}-

      - name: 'Build docker image'
        uses: ./.github/actions/docker

      - name: 'Check code formatting'
        id: syntax_check
        uses: ./.github/actions/docker
        with:
          run: SET_GH_OUTPUT=1 make lint

      - name: Report code formatting errors
        if: failure() && steps.syntax_check.outputs.errors && github.event.pull_request
        uses: peter-evans/create-or-update-comment@v1
        with:
          issue-number: ${{ github.event.pull_request.number }}
          body: |
            Please fix following code formatting errors:
            ```
            ${{ steps.syntax_check.outputs.errors }}
            ```
            You might want to run `docker compose exec dev make format` for an auto-fix.
