name: Coding Guidelines

on: pull_request

permissions:
  contents: read

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

    - name: Set up Python
      uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
      with:
        python-version: 3.12
        cache: pip
        cache-dependency-path: scripts/requirements-actions.txt

    - name: Install Python packages
      run: |
        pip install -r scripts/requirements-actions.txt --require-hashes

    - 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
