name: Coding Guidelines

on: pull_request

jobs:
  compliance_job:
    runs-on: ubuntu-22.04
    name: Run coding guidelines checks on patch series (PR)
    steps:
    - name: Checkout the code
      uses: actions/checkout@v4
      with:
        ref: ${{ github.event.pull_request.head.sha }}
        fetch-depth: 0

    - name: cache-pip
      uses: actions/cache@v4
      with:
        path: ~/.cache/pip
        key: ${{ runner.os }}-pip-${{ hashFiles('.github/workflows/coding_guidelines.yml') }}

    - name: Install python dependencies
      run: |
        pip install unidiff
        pip install sh

    - name: Install Packages
      run: |
        sudo apt-get update
        sudo apt-get install coccinelle

    - name: Run Coding Guidelines Checks
      continue-on-error: true
      id: coding_guidelines
      env:
        BASE_REF: ${{ github.base_ref }}
      run: |
        export ZEPHYR_BASE=$PWD
        git config --global user.email "actions@zephyrproject.org"
        git config --global user.name "Github Actions"
        git remote -v
        rm -fr ".git/rebase-apply"
        rm -fr ".git/rebase-merge"
        git rebase origin/${BASE_REF}
        git clean -f -d
        source zephyr-env.sh
        # debug
        ls -la
        git log  --pretty=oneline | head -n 10
        ./scripts/ci/guideline_check.py --output output.txt -c origin/${BASE_REF}..

    - name: check-warns
      run: |
        if [[ -s "output.txt" ]]; then
            errors=$(cat output.txt)
            errors="${errors//'%'/'%25'}"
            errors="${errors//$'\n'/'%0A'}"
            errors="${errors//$'\r'/'%0D'}"
            echo "::error file=output.txt::$errors"
            exit 1;
        fi
