name: PyTaiko
on:
    push:
        branches: ["main"]
    pull_request:
        branches: ["main"]
permissions:
    contents: read
jobs:
    build:
        strategy:
            matrix:
                os: [macos-latest, ubuntu-latest, windows-latest]
        runs-on: ${{ matrix.os }}
        steps:
            - name: Check-out repository
              uses: actions/checkout@v4
            - name: Install uv
              uses: astral-sh/setup-uv@v4
              with:
                  enable-cache: true
            - name: Setup Python
              run: uv python install
            - name: Install Dependencies
              run: |
                  uv sync
            - name: Install Nuitka
              run: |
                  uv add nuitka
            - name: Build Executable
              run: |
                  uv run nuitka --mode=app --include-module=raylib,moviepy,numpy,sounddevice,soundfile,tomlkit --noinclude-setuptools-mode=nofollow --noinclude-IPython-mode=nofollow --assume-yes-for-downloads PyTaiko.py
            - name: Upload Artifacts
              uses: actions/upload-artifact@v4
              with:
                  name: PyTaiko ${{ runner.os }} Build
                  path: |
                      Graphics/*
                      Sounds/*
                      Videos/*
                      Songs/*
                      config.toml
                      *.exe
                      *.bin
                      *.app/**/*
