name: C/C++ CI

on:
  workflow_dispatch:
  push:
    branches: 
      - master
      - preview
    tags: 
      - v*.*.*
      - preview-v*.*.*
  pull_request:
    branches:
      - master
      - preview

jobs:

  build-macOS-x86_64:
    runs-on: macos-13
    steps:
      - name: Check out repository code
        uses: actions/checkout@v4
        with:
          submodules: 'true'

      - name: Fix homebrew in Github Runner
        run: |
          for f in $(find /usr/local/bin -type l -print); do \
            (readlink $f | grep -q -s "/Library") && echo Removing "$f" && rm -f "$f"; \
          done || exit 0
          
      - name: Install dependencies
        run: |
          brew update
          brew upgrade
          brew install autoconf sdl2 mpg123 sdl2_ttf sdl2_image flac libmpeg2 libserialport portmidi dylibbundler wget

      - name: make for macOS X64
        run: make -j4 PLATFORM=osx-x86

      - name: ZIP binaries
        if: github.ref_type != 'tag'
        run: zip -r amiberry-macOS-x86_64.zip Amiberry.app

      - name: Upload artifact
        if: github.ref_type != 'tag'
        uses: actions/upload-artifact@v4
        with:
          name: amiberry-macOS-64bit-intel
          path: amiberry-macOS-x86_64.zip

      - name: ZIP binaries
        if: github.ref_type == 'tag'
        run: zip -r amiberry-${{ github.ref_name }}-macOS-x86_64.zip Amiberry.app

      - name: Upload artifact
        if: github.ref_type == 'tag'
        uses: actions/upload-artifact@v4
        with:
          name: amiberry-macOS-64bit-intel
          path: amiberry-${{ github.ref_name }}-macOS-x86_64.zip

  build-macOS-Apple-Silicon:
    runs-on: macos-latest
    steps:
      - name: Check out repository code
        uses: actions/checkout@v4
        with:
          submodules: 'true'

      - name: Install dependencies
        run: |
          brew update
          brew upgrade
          brew install autoconf sdl2 mpg123 sdl2_ttf sdl2_image flac libmpeg2 libserialport portmidi dylibbundler wget

      - name: make for macOS Apple Silicon
        run: make -j4 PLATFORM=osx-m1

      - name: ZIP binaries
        if: github.ref_type != 'tag'
        run: zip -r amiberry-macOS-apple-silicon.zip Amiberry.app
        
      - name: Upload artifact
        if: github.ref_type != 'tag'
        uses: actions/upload-artifact@v4
        with:
          name: amiberry-macOS-64bit-apple-silicon
          path: amiberry-macOS-apple-silicon.zip

      - name: ZIP binaries
        if: github.ref_type == 'tag'
        run: zip -r amiberry-${{ github.ref_name }}-macOS-apple-silicon.zip Amiberry.app

      - name: Upload artifact
        if: github.ref_type == 'tag'
        uses: actions/upload-artifact@v4
        with:
          name: amiberry-macOS-64bit-apple-silicon
          path: amiberry-${{ github.ref_name }}-macOS-apple-silicon.zip

  build-debian-bullseye-x86_64:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
      with:
        submodules: 'true'

    - name: Run the build process with Docker
      uses: addnab/docker-run-action@v3
      with:
        image: midwan/amiberry-debian-x86_64:bullseye
        options: -v ${{ github.workspace }}:/build
        run: |
          make -j8 PLATFORM=x86-64

    - name: Upload artifact
      if: github.ref_type != 'tag'
      uses: actions/upload-artifact@v4
      with:
        name: amiberry-debian-bullseye-x86_64
        path: |
          amiberry
          abr/**
          cdroms/**
          conf/**
          controllers/**
          data/**
          floppies/**
          harddrives/**
          inputrecordings/**
          kickstarts/**
          lha/**
          nvram/**
          plugins/**
          savestates/**
          screenshots/**
          whdboot/**

    - name: ZIP binaries
      if: github.ref_type == 'tag'
      run: zip -r amiberry-${{ github.ref_name }}-debian-bullseye-x86_64.zip amiberry abr cdroms conf controllers data floppies harddrives kickstarts lha nvram plugins savestates screenshots whdboot

    - name: Upload artifact
      if: github.ref_type == 'tag'
      uses: actions/upload-artifact@v4
      with:
        name: amiberry-debian-bullseye-x86_64
        path: amiberry-${{ github.ref_name }}-debian-bullseye-x86_64.zip

  build-debian-bookworm-x86_64:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
      with:
        submodules: 'true'

    - name: Run the build process with Docker
      uses: addnab/docker-run-action@v3
      with:
        image: midwan/amiberry-debian-x86_64:bookworm
        options: -v ${{ github.workspace }}:/build
        run: |
          make -j8 PLATFORM=x86-64

    - name: Upload artifact
      if: github.ref_type != 'tag'
      uses: actions/upload-artifact@v4
      with:
        name: amiberry-debian-bookworm-x86_64
        path: |
          amiberry
          abr/**
          cdroms/**
          conf/**
          controllers/**
          data/**
          floppies/**
          harddrives/**
          inputrecordings/**
          kickstarts/**
          lha/**
          nvram/**
          plugins/**
          savestates/**
          screenshots/**
          whdboot/**

    - name: ZIP binaries
      if: github.ref_type == 'tag'
      run: zip -r amiberry-${{ github.ref_name }}-debian-bookworm-x86_64.zip amiberry abr cdroms conf controllers data floppies harddrives kickstarts lha nvram plugins savestates screenshots whdboot

    - name: Upload artifact
      if: github.ref_type == 'tag'
      uses: actions/upload-artifact@v4
      with:
        name: amiberry-debian-bookworm-x86_64
        path: amiberry-${{ github.ref_name }}-debian-bookworm-x86_64.zip

  build-manjaro-aarch64-rpi4:
    if: github.ref_type == 'tag' && startsWith(github.ref_name, 'v')
    runs-on: [self-hosted, Linux, ARM64, manjaro]
    steps:
    - uses: actions/checkout@v4
      with:
        submodules: 'true'

    - name: build for RPI4 64-bit
      run: make -j4 PLATFORM=rpi4-64-sdl2

    - name: Upload artifact
      if: github.ref_type != 'tag'
      uses: actions/upload-artifact@v4
      with:
        name: amiberry-manjaro-aarch64-rpi4
        path: |
          amiberry
          abr/**
          cdroms/**
          conf/**
          controllers/**
          data/**
          floppies/**
          harddrives/**
          inputrecordings/**
          kickstarts/**
          lha/**
          nvram/**
          plugins/**
          savestates/**
          screenshots/**
          whdboot/**

    - name: ZIP binaries
      if: github.ref_type == 'tag'
      run: zip -r amiberry-${{ github.ref_name }}-manjaro-aarch64-rpi4.zip amiberry abr cdroms conf controllers data floppies harddrives kickstarts lha nvram plugins savestates screenshots whdboot

    - name: Upload artifact
      if: github.ref_type == 'tag'
      uses: actions/upload-artifact@v4
      with:
        name: amiberry-manjaro-aarch64-rpi4
        path: amiberry-${{ github.ref_name }}-manjaro-aarch64-rpi4.zip
  
  build-debian-bookworm-aarch64-rpi5:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
      with:
        submodules: 'true'

    - name: Run the build process with Docker
      uses: addnab/docker-run-action@v3
      with:
        image: midwan/amiberry-debian-aarch64:bookworm
        options: -v ${{ github.workspace }}:/build
        run: |
          make -j8 PLATFORM=rpi5-64-sdl2

    - name: Upload artifact
      if: github.ref_type != 'tag'
      uses: actions/upload-artifact@v4
      with:
        name: amiberry-debian-bookworm-aarch64-rpi5
        path: |
          amiberry
          abr/**
          cdroms/**
          conf/**
          controllers/**
          data/**
          floppies/**
          harddrives/**
          inputrecordings/**
          kickstarts/**
          lha/**
          nvram/**
          plugins/**
          savestates/**
          screenshots/**
          whdboot/**

    - name: ZIP binaries
      if: github.ref_type == 'tag'
      run: zip -r amiberry-${{ github.ref_name }}-debian-bookworm-aarch64-rpi5.zip amiberry abr cdroms conf controllers data floppies harddrives kickstarts lha nvram plugins savestates screenshots whdboot

    - name: Upload artifact
      if: github.ref_type == 'tag'
      uses: actions/upload-artifact@v4
      with:
        name: amiberry-debian-bookworm-aarch64-rpi5
        path: amiberry-${{ github.ref_name }}-debian-bookworm-aarch64-rpi5.zip

  build-debian-bookworm-armhf-rpi5:
    if: (github.ref == 'refs/heads/master') || (github.ref_type == 'tag' && startsWith(github.ref_name, 'v'))
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
      with:
        submodules: 'true'

    - name: Run the build process with Docker
      uses: addnab/docker-run-action@v3
      with:
        image: midwan/amiberry-debian-armhf:bookworm
        options: -v ${{ github.workspace }}:/build
        run: |
          make -j8 PLATFORM=rpi5-sdl2

    - name: Upload artifact
      if: github.ref_type != 'tag'
      uses: actions/upload-artifact@v4
      with:
        name: amiberry-debian-bookworm-armhf-rpi5
        path: |
          amiberry
          abr/**
          cdroms/**
          conf/**
          controllers/**
          data/**
          floppies/**
          harddrives/**
          inputrecordings/**
          kickstarts/**
          lha/**
          nvram/**
          plugins/**
          savestates/**
          screenshots/**
          whdboot/**

    - name: ZIP binaries
      if: github.ref_type == 'tag'
      run: zip -r amiberry-${{ github.ref_name }}-debian-bookworm-armhf-rpi5.zip amiberry abr cdroms conf controllers data floppies harddrives kickstarts lha nvram plugins savestates screenshots whdboot

    - name: Upload artifact
      if: github.ref_type == 'tag'
      uses: actions/upload-artifact@v4
      with:
        name: amiberry-debian-bookworm-armhf-rpi5
        path: amiberry-${{ github.ref_name }}-debian-bookworm-armhf-rpi5.zip

  build-debian-bullseye-aarch64-rpi4:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
      with:
        submodules: 'true'

    - name: Run the build process with Docker
      uses: addnab/docker-run-action@v3
      with:
        image: midwan/amiberry-debian-aarch64:bullseye
        options: -v ${{ github.workspace }}:/build
        run: |
          make -j8 PLATFORM=rpi4-64-sdl2

    - name: Upload artifact
      if: github.ref_type != 'tag'
      uses: actions/upload-artifact@v4
      with:
        name: amiberry-debian-bullseye-aarch64-rpi4
        path: |
          amiberry
          abr/**
          cdroms/**
          conf/**
          controllers/**
          data/**
          floppies/**
          harddrives/**
          inputrecordings/**
          kickstarts/**
          lha/**
          nvram/**
          plugins/**
          savestates/**
          screenshots/**
          whdboot/**

    - name: ZIP binaries
      if: github.ref_type == 'tag'
      run: zip -r amiberry-${{ github.ref_name }}-debian-bullseye-aarch64-rpi4.zip amiberry abr cdroms conf controllers data floppies harddrives kickstarts lha nvram plugins savestates screenshots whdboot

    - name: Upload artifact
      if: github.ref_type == 'tag'
      uses: actions/upload-artifact@v4
      with:
        name: amiberry-debian-bullseye-aarch64-rpi4
        path: amiberry-${{ github.ref_name }}-debian-bullseye-aarch64-rpi4.zip

  build-debian-bullseye-armhf-rpi4:
    if: (github.ref == 'refs/heads/master') || (github.ref_type == 'tag' && startsWith(github.ref_name, 'v'))
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
      with:
        submodules: 'true'

    - name: Run the build process with Docker
      uses: addnab/docker-run-action@v3
      with:
        image: midwan/amiberry-debian-armhf:bullseye
        options: -v ${{ github.workspace }}:/build
        run: |
          make -j8 PLATFORM=rpi4-sdl2

    - name: Upload artifact
      if: github.ref_type != 'tag'
      uses: actions/upload-artifact@v4
      with:
        name: amiberry-debian-bullseye-armhf-rpi4
        path: |
          amiberry
          abr/**
          cdroms/**
          conf/**
          controllers/**
          data/**
          floppies/**
          harddrives/**
          inputrecordings/**
          kickstarts/**
          lha/**
          nvram/**
          plugins/**
          savestates/**
          screenshots/**
          whdboot/**

    - name: ZIP binaries
      if: github.ref_type == 'tag'
      run: zip -r amiberry-${{ github.ref_name }}-debian-bullseye-armhf-rpi4.zip amiberry abr cdroms conf controllers data floppies harddrives kickstarts lha nvram plugins savestates screenshots whdboot

    - name: Upload artifact
      if: github.ref_type == 'tag'
      uses: actions/upload-artifact@v4
      with:
        name: amiberry-debian-bullseye-armhf-rpi4
        path: amiberry-${{ github.ref_name }}-debian-bullseye-armhf-rpi4.zip

  build-debian-bookworm-aarch64-rpi4:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
      with:
        submodules: 'true'

    - name: Run the build process with Docker
      uses: addnab/docker-run-action@v3
      with:
        image: midwan/amiberry-debian-aarch64:bookworm
        options: -v ${{ github.workspace }}:/build
        run: |
          make -j8 PLATFORM=rpi4-64-sdl2

    - name: Upload artifact
      if: github.ref_type != 'tag'
      uses: actions/upload-artifact@v4
      with:
        name: amiberry-debian-bookworm-aarch64-rpi4
        path: |
          amiberry
          abr/**
          cdroms/**
          conf/**
          controllers/**
          data/**
          floppies/**
          harddrives/**
          inputrecordings/**
          kickstarts/**
          lha/**
          nvram/**
          plugins/**
          savestates/**
          screenshots/**
          whdboot/**

    - name: ZIP binaries
      if: github.ref_type == 'tag'
      run: zip -r amiberry-${{ github.ref_name }}-debian-bookworm-aarch64-rpi4.zip amiberry abr cdroms conf controllers data floppies harddrives kickstarts lha nvram plugins savestates screenshots whdboot

    - name: Upload artifact
      if: github.ref_type == 'tag'
      uses: actions/upload-artifact@v4
      with:
        name: amiberry-debian-bookworm-aarch64-rpi4
        path: amiberry-${{ github.ref_name }}-debian-bookworm-aarch64-rpi4.zip

  build-debian-bookworm-armhf-rpi4:
    if: (github.ref == 'refs/heads/master') || (github.ref_type == 'tag' && startsWith(github.ref_name, 'v'))
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
      with:
        submodules: 'true'

    - name: Run the build process with Docker
      uses: addnab/docker-run-action@v3
      with:
        image: midwan/amiberry-debian-armhf:bookworm
        options: -v ${{ github.workspace }}:/build
        run: |
          make -j8 PLATFORM=rpi4-sdl2

    - name: Upload artifact
      if: github.ref_type != 'tag'
      uses: actions/upload-artifact@v4
      with:
        name: amiberry-debian-bookworm-armhf-rpi4
        path: |
          amiberry
          abr/**
          cdroms/**
          conf/**
          controllers/**
          data/**
          floppies/**
          harddrives/**
          inputrecordings/**
          kickstarts/**
          lha/**
          nvram/**
          plugins/**
          savestates/**
          screenshots/**
          whdboot/**

    - name: ZIP binaries
      if: github.ref_type == 'tag'
      run: zip -r amiberry-${{ github.ref_name }}-debian-bookworm-armhf-rpi4.zip amiberry abr cdroms conf controllers data floppies harddrives kickstarts lha nvram plugins savestates screenshots whdboot

    - name: Upload artifact
      if: github.ref_type == 'tag'
      uses: actions/upload-artifact@v4
      with:
        name: amiberry-debian-bookworm-armhf-rpi4
        path: amiberry-${{ github.ref_name }}-debian-bookworm-armhf-rpi4.zip

  build-debian-bullseye-aarch64-rpi3:
    if: (github.ref == 'refs/heads/master') || (github.ref_type == 'tag' && startsWith(github.ref_name, 'v'))
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
      with:
        submodules: 'true'

    - name: Run the build process with Docker
      uses: addnab/docker-run-action@v3
      with:
        image: midwan/amiberry-debian-aarch64:bullseye
        options: -v ${{ github.workspace }}:/build
        run: |
          make -j8 PLATFORM=rpi3-64-sdl2

    - name: Upload artifact
      if: github.ref_type != 'tag'
      uses: actions/upload-artifact@v4
      with:
        name: amiberry-debian-bullseye-aarch64-rpi3
        path: |
          amiberry
          abr/**
          cdroms/**
          conf/**
          controllers/**
          data/**
          floppies/**
          harddrives/**
          inputrecordings/**
          kickstarts/**
          lha/**
          nvram/**
          plugins/**
          savestates/**
          screenshots/**
          whdboot/**

    - name: ZIP binaries
      if: github.ref_type == 'tag'
      run: zip -r amiberry-${{ github.ref_name }}-debian-bullseye-aarch64-rpi3.zip amiberry abr cdroms conf controllers data floppies harddrives kickstarts lha nvram plugins savestates screenshots whdboot

    - name: Upload artifact
      if: github.ref_type == 'tag'
      uses: actions/upload-artifact@v4
      with:
        name: amiberry-debian-bullseye-aarch64-rpi3
        path: amiberry-${{ github.ref_name }}-debian-bullseye-aarch64-rpi3.zip

  build-debian-bullseye-armhf-rpi3:
    if: (github.ref == 'refs/heads/master') || (github.ref_type == 'tag' && startsWith(github.ref_name, 'v'))
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
      with:
        submodules: 'true'

    - name: Run the build process with Docker
      uses: addnab/docker-run-action@v3
      with:
        image: midwan/amiberry-debian-armhf:bullseye
        options: -v ${{ github.workspace }}:/build
        run: |
          make -j8 PLATFORM=rpi3-sdl2

    - name: Upload artifact
      if: github.ref_type != 'tag'
      uses: actions/upload-artifact@v4
      with:
        name: amiberry-debian-bullseye-armhf-rpi3
        path: |
          amiberry
          abr/**
          cdroms/**
          conf/**
          controllers/**
          data/**
          floppies/**
          harddrives/**
          inputrecordings/**
          kickstarts/**
          lha/**
          nvram/**
          plugins/**
          savestates/**
          screenshots/**
          whdboot/**

    - name: ZIP binaries
      if: github.ref_type == 'tag'
      run: zip -r amiberry-${{ github.ref_name }}-debian-bullseye-armhf-rpi3.zip amiberry abr cdroms conf controllers data floppies harddrives kickstarts lha nvram plugins savestates screenshots whdboot

    - name: Upload artifact
      if: github.ref_type == 'tag'
      uses: actions/upload-artifact@v4
      with:
        name: amiberry-debian-bullseye-armhf-rpi3
        path: amiberry-${{ github.ref_name }}-debian-bullseye-armhf-rpi3.zip

  build-debian-bookworm-aarch64-rpi3:
    if: (github.ref == 'refs/heads/master') || (github.ref_type == 'tag' && startsWith(github.ref_name, 'v'))
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
      with:
        submodules: 'true'

    - name: Run the build process with Docker
      uses: addnab/docker-run-action@v3
      with:
        image: midwan/amiberry-debian-aarch64:bookworm
        options: -v ${{ github.workspace }}:/build
        run: |
          make -j8 PLATFORM=rpi3-64-sdl2

    - name: Upload artifact
      if: github.ref_type != 'tag'
      uses: actions/upload-artifact@v4
      with:
        name: amiberry-debian-bookworm-aarch64-rpi3
        path: |
          amiberry
          abr/**
          cdroms/**
          conf/**
          controllers/**
          data/**
          floppies/**
          harddrives/**
          inputrecordings/**
          kickstarts/**
          lha/**
          nvram/**
          plugins/**
          savestates/**
          screenshots/**
          whdboot/**

    - name: ZIP binaries
      if: github.ref_type == 'tag'
      run: zip -r amiberry-${{ github.ref_name }}-debian-bookworm-aarch64-rpi3.zip amiberry abr cdroms conf controllers data floppies harddrives kickstarts lha nvram plugins savestates screenshots whdboot

    - name: Upload artifact
      if: github.ref_type == 'tag'
      uses: actions/upload-artifact@v4
      with:
        name: amiberry-debian-bookworm-aarch64-rpi3
        path: amiberry-${{ github.ref_name }}-debian-bookworm-aarch64-rpi3.zip

  build-debian-bookworm-armhf-rpi3:
    if: (github.ref == 'refs/heads/master') || (github.ref_type == 'tag' && startsWith(github.ref_name, 'v'))
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
      with:
        submodules: 'true'

    - name: Run the build process with Docker
      uses: addnab/docker-run-action@v3
      with:
        image: midwan/amiberry-debian-armhf:bookworm
        options: -v ${{ github.workspace }}:/build
        run: |
          make -j8 PLATFORM=rpi3-sdl2

    - name: Upload artifact
      if: github.ref_type != 'tag'
      uses: actions/upload-artifact@v4
      with:
        name: amiberry-debian-bookworm-armhf-rpi3
        path: |
          amiberry
          abr/**
          cdroms/**
          conf/**
          controllers/**
          data/**
          floppies/**
          harddrives/**
          inputrecordings/**
          kickstarts/**
          lha/**
          nvram/**
          plugins/**
          savestates/**
          screenshots/**
          whdboot/**

    - name: ZIP binaries
      if: github.ref_type == 'tag'
      run: zip -r amiberry-${{ github.ref_name }}-debian-bookworm-armhf-rpi3.zip amiberry abr cdroms conf controllers data floppies harddrives kickstarts lha nvram plugins savestates screenshots whdboot

    - name: Upload artifact
      if: github.ref_type == 'tag'
      uses: actions/upload-artifact@v4
      with:
        name: amiberry-debian-bookworm-armhf-rpi3
        path: amiberry-${{ github.ref_name }}-debian-bookworm-armhf-rpi3.zip

  create-release:
    needs: [build-macOS-x86_64, build-macOS-apple-silicon, build-debian-bullseye-x86_64, build-debian-bookworm-x86_64, build-manjaro-aarch64-rpi4, build-debian-bookworm-aarch64-rpi5, build-debian-bookworm-armhf-rpi5, build-debian-bullseye-aarch64-rpi4, build-debian-bullseye-armhf-rpi4, build-debian-bookworm-aarch64-rpi4, build-debian-bookworm-armhf-rpi4, build-debian-bullseye-aarch64-rpi3, build-debian-bullseye-armhf-rpi3, build-debian-bookworm-aarch64-rpi3, build-debian-bookworm-armhf-rpi3]
    runs-on: ubuntu-latest
    if: github.ref_type == 'tag' && startsWith(github.ref_name, 'v')
    steps:
      - uses: actions/checkout@v4
      
      - name: Create Changelog
        if: github.ref_type == 'tag'
        id: changelog
        uses: loopwerk/tag-changelog@v1
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          config_file: .github/tag-changelog-config.js

      - name: Download Build Artifacts
        uses: actions/download-artifact@v4.1.2

      - name: Create Release
        if: github.ref_type == 'tag'
        uses: ncipollo/release-action@v1
        with:
          allowUpdates: true
          omitBodyDuringUpdate: true
          body: ${{ steps.changelog.outputs.changes }}
          artifacts: |
            amiberry-macOS-64bit-intel/amiberry-${{ github.ref_name }}-macOS-x86_64.zip
            amiberry-macOS-64bit-apple-silicon/amiberry-${{ github.ref_name }}-macOS-apple-silicon.zip
            amiberry-debian-bullseye-x86_64/amiberry-${{ github.ref_name }}-debian-bullseye-x86_64.zip
            amiberry-debian-bookworm-x86_64/amiberry-${{ github.ref_name }}-debian-bookworm-x86_64.zip
            amiberry-manjaro-aarch64-rpi4/amiberry-${{ github.ref_name }}-manjaro-aarch64-rpi4.zip
            amiberry-debian-bookworm-aarch64-rpi5/amiberry-${{ github.ref_name }}-debian-bookworm-aarch64-rpi5.zip
            amiberry-debian-bookworm-armhf-rpi5/amiberry-${{ github.ref_name }}-debian-bookworm-armhf-rpi5.zip
            amiberry-debian-bullseye-aarch64-rpi4/amiberry-${{ github.ref_name }}-debian-bullseye-aarch64-rpi4.zip
            amiberry-debian-bullseye-armhf-rpi4/amiberry-${{ github.ref_name }}-debian-bullseye-armhf-rpi4.zip
            amiberry-debian-bookworm-aarch64-rpi4/amiberry-${{ github.ref_name }}-debian-bookworm-aarch64-rpi4.zip
            amiberry-debian-bookworm-armhf-rpi4/amiberry-${{ github.ref_name }}-debian-bookworm-armhf-rpi4.zip
            amiberry-debian-bullseye-aarch64-rpi3/amiberry-${{ github.ref_name }}-debian-bullseye-aarch64-rpi3.zip
            amiberry-debian-bullseye-armhf-rpi3/amiberry-${{ github.ref_name }}-debian-bullseye-armhf-rpi3.zip
            amiberry-debian-bookworm-aarch64-rpi3/amiberry-${{ github.ref_name }}-debian-bookworm-aarch64-rpi3.zip
            amiberry-debian-bookworm-armhf-rpi3/amiberry-${{ github.ref_name }}-debian-bookworm-armhf-rpi3.zip

  create-prerelease:
    needs: [build-macOS-x86_64, build-macOS-apple-silicon, build-debian-bullseye-x86_64, build-debian-bookworm-x86_64, build-debian-bookworm-aarch64-rpi5, build-debian-bullseye-aarch64-rpi4, build-debian-bookworm-aarch64-rpi4]
    runs-on: ubuntu-latest
    if: github.ref_type == 'tag' && startsWith(github.ref_name, 'preview-v')
    steps:
      - uses: actions/checkout@v4

      - name: Create Changelog
        if: github.ref_type == 'tag'
        id: changelog
        uses: loopwerk/tag-changelog@v1
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          config_file: .github/tag-changelog-config.js

      - name: Download Build Artifacts
        uses: actions/download-artifact@v4.1.2

      - name: Create PreRelease
        if: github.ref_type == 'tag'
        uses: ncipollo/release-action@v1
        with:
          prerelease: true
          allowUpdates: true
          omitBodyDuringUpdate: true
          body: ${{ steps.changelog.outputs.changes }}
          artifacts: |
            amiberry-macOS-64bit-intel/amiberry-${{ github.ref_name }}-macOS-x86_64.zip
            amiberry-macOS-64bit-apple-silicon/amiberry-${{ github.ref_name }}-macOS-apple-silicon.zip
            amiberry-debian-bullseye-x86_64/amiberry-${{ github.ref_name }}-debian-bullseye-x86_64.zip
            amiberry-debian-bookworm-x86_64/amiberry-${{ github.ref_name }}-debian-bookworm-x86_64.zip
            amiberry-debian-bookworm-aarch64-rpi5/amiberry-${{ github.ref_name }}-debian-bookworm-aarch64-rpi5.zip
            amiberry-debian-bullseye-aarch64-rpi4/amiberry-${{ github.ref_name }}-debian-bullseye-aarch64-rpi4.zip
            amiberry-debian-bookworm-aarch64-rpi4/amiberry-${{ github.ref_name }}-debian-bookworm-aarch64-rpi4.zip
