name: ci-build

on:
  pull_request:
    branches:
    - '*'
  push:
    branches: [ main, MMU_* ]
    tags:
    - "v*"

jobs:
  build:
    runs-on: ubuntu-22.04

    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

    # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
    - name: Checkout ${{ github.event.pull_request.head.ref }}
      uses: actions/checkout@v4
      if: ${{ github.event.pull_request }}
      with:
        ref: ${{ github.event.pull_request.head.sha }}
        submodules: true

    - name: Checkout ${{ github.event.ref }}
      uses: actions/checkout@v4
      if: ${{ !github.event.pull_request }}
      with:
        ref: ${{ github.event.ref }}
        submodules: true

    - 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
      run: |
          mkdir build
          cd build
          cmake .. -DCMAKE_TOOLCHAIN_FILE="../cmake/AvrGcc.cmake" -DCMAKE_BUILD_TYPE=Release -G Ninja
          ninja

    - name: Upload artifacts
      if: ${{ !github.event.pull_request }}
      uses: actions/upload-artifact@v4
      with:
        name: Firmware
        path: build/*.hex

    - name: RELEASE THE KRAKEN
      if: startsWith(github.ref, 'refs/tags/v')
      uses: "marvinpinto/action-automatic-releases@latest"
      with:
        repo_token: "${{ secrets.GITHUB_TOKEN }}"
        draft: true
        files: |
          build/autopublish/*.hex
