name: pr-size

on:
  pull_request_target:
    branches: [ main, MMU_* ]

env:
    TARGETS: "firmware"

jobs:
  build:
    runs-on: ubuntu-22.04
    permissions:
      pull-requests: write

    steps:

    # setup base required dependencies
    - name: Setup dependencies
      run: |
          sudo apt-get update
          sudo apt-get install cmake ninja-build python3-pyelftools python3-regex python3-polib

    # build the base branch
    - name: Checkout base
      uses: actions/checkout@v4

    - name: Cache Dependencies
      uses: actions/cache@v4
      id: cache-pkgs
      with:
          path: ".dependencies"
          key: "build-deps-1_0_0-linux"

    - name: Setup build dependencies
      run: |
          ./utils/bootstrap.py

    - name: Cache permissions
      run: sudo chmod -R 744 .dependencies

    - name: Build base
      run: |
          rm -rf build-base
          mkdir build-base
          cd build-base
          cmake .. -DCMAKE_TOOLCHAIN_FILE="../cmake/AvrGcc.cmake" -DCMAKE_BUILD_TYPE=Release -G Ninja
          ninja

    # save pr-size for later use
    - name: Save base data
      run: |
          cp -f ./.github/workflows/pr-size.sh build-base

    # build the PR branch
    - name: Checkout PR
      uses: actions/checkout@v4
      with:
        clean: false
        ref: ${{ github.event.pull_request.head.sha }}

    - name: Build PR
      run: |
          rm -rf build-pr
          mkdir build-pr
          cd build-pr
          cmake .. -DCMAKE_TOOLCHAIN_FILE="../cmake/AvrGcc.cmake" -DCMAKE_BUILD_TYPE=Release -G Ninja
          ninja

    # extract/show build differences
    - name: Calculate binary changes
      run: |
          rm -rf build-changes
          ./build-base/pr-size.sh build-changes build-base build-pr

    - name: Add PR Comment
      uses: mshick/add-pr-comment@v2.8.2
      with:
        message-path: build-changes
