name: Ręczne Budowanie Paczki .tar.gz (ARMv7/ARMv6 z QEMU)

on:
  workflow_dispatch:
    inputs:
      version:
        description: 'Podaj wersję paczki do zbudowania (np. v1.5.0)'
        required: true
        default: 'v1.0.0-embedded'

jobs:
  build-and-package:
    runs-on: ubuntu-latest
    
    strategy:
      matrix:
        # --- ZMIANA 1: Rozbudowujemy matrix o dodatkowe zmienne ---
        include:
          - arch_name: arm32v7
            platform: linux/arm/v7
          - arch_name: arm32v6
            platform: linux/arm/v6

    steps:
      - name: Pobieranie kodu
        uses: actions/checkout@v3

      - name: Ustawienie QEMU
        uses: docker/setup-qemu-action@v3

      - name: Zbuduj paczkę w emulowanym kontenerze
        id: build-step
        run: |
          # Definiujemy nazwy, korzystając ze zmiennych z matrixa
          VERSION="${{ github.event.inputs.version }}"
          ARCH_NAME="${{ matrix.arch_name }}"
          PLATFORM="${{ matrix.platform }}"
          CONTAINER_NAME="builder-${ARCH_NAME//\//-}"
          FILENAME="HAIERPI-${VERSION}-${ARCH_NAME//\//-}.tar.gz"
          IMAGE_NAME="${ARCH_NAME}/python:3.9-alpine"

          echo "Start budowania dla architektury: ${ARCH_NAME}"
          echo "Używany obraz Docker: ${IMAGE_NAME}"
          echo "Flaga platformy: ${PLATFORM}"

          # --- ZMIANA 2: Dodajemy flagę --platform do docker run ---
          echo "Uruchamiam kontener budujący: ${CONTAINER_NAME}"
          docker run -d --name "${CONTAINER_NAME}" --platform "${PLATFORM}" "${IMAGE_NAME}" tail -f /dev/null

          # Reszta skryptu pozostaje bez zmian, bo korzysta z tych samych zmiennych
          echo "Tworzę katalog /opt/haiertest wewnątrz kontenera..."
          docker exec "${CONTAINER_NAME}" mkdir -p /opt/haiertest

          echo "Kopiuję requirements.txt do kontenera..."
          docker cp requirements.txt "${CONTAINER_NAME}:/opt/haiertest/"

          echo "Instaluję zależności wewnątrz kontenera..."
          docker exec "${CONTAINER_NAME}" /bin/sh -c "cd /opt/haiertest && python -m venv env && source env/bin/activate && pip install -r requirements.txt"
          
          echo "Naprawiam ścieżki w środowisku venv, aby było przenośne..."
          docker exec "${CONTAINER_NAME}" /bin/sh -c ' \
            TARGET_PYTHON_PATH="/usr/bin/python3"; \
            VENV_PATH="/opt/haiertest/env"; \
            echo "Poprawiam główny link symboliczny do interpretera..."; \
            PY_VERSION_LINK=$(basename $(readlink ${VENV_PATH}/bin/python3)); \
            rm "${VENV_PATH}/bin/${PY_VERSION_LINK}"; \
            ln -s "${TARGET_PYTHON_PATH}" "${VENV_PATH}/bin/${PY_VERSION_LINK}"; \
          '
          
          echo "Kopiuję kod aplikacji do kontenera..."
          docker cp . "${CONTAINER_NAME}:/opt/haiertest/"

          echo "Tworzę archiwum ${FILENAME} wewnątrz kontenera..."
          docker exec "${CONTAINER_NAME}" tar -czf "/${FILENAME}" -C /opt/ haiertest

          echo "Kopiuję gotową paczkę z kontenera..."
          docker cp "${CONTAINER_NAME}:/${FILENAME}" .

          echo "Sprzątam po procesie budowania..."
          docker stop "${CONTAINER_NAME}"
          docker rm "${CONTAINER_NAME}"

          echo "filename=${FILENAME}" >> $GITEA_OUTPUT

      - name: Publikacja paczki
        run: |
          PACKAGE_FILE="${{ steps.build-step.outputs.filename }}"
          echo "Publikuję plik: ${PACKAGE_FILE}"
          REPO_SLUG="${{ gitea.repository }}"
          REPO_OWNER=$(echo $REPO_SLUG | cut -d'/' -f1)
          REPO_NAME=$(echo $REPO_SLUG | cut -d'/' -f2)
          PACKAGE_VERSION="${{ github.event.inputs.version }}"
          API_URL=$(echo "${{ gitea.api_url }}" | sed 's|/api/v1|/api|')
          TARGET_URL="${API_URL}/packages/${REPO_OWNER}/generic/${REPO_NAME}/${PACKAGE_VERSION}/$(basename ${PACKAGE_FILE})"
          curl --fail -i -X PUT \
            --user "${{ gitea.actor }}:${{ secrets.PACKAGE_UPLOAD_TOKEN }}" \
            --upload-file "${PACKAGE_FILE}" \
            "${TARGET_URL}"
