# Instrukcja tworzenia aktualizacji shopPRO ## Nowy sposób (od v0.301) — automatyczny build script ### Wymagania - Git z tagami wersji (np. `v0.299`, `v0.300`) - PowerShell ### Workflow ``` 1. Pracuj normalnie: commit, push, commit, push... 2. Gdy wersja gotowa: → git tag v0.XXX → ./build-update.ps1 -ToTag v0.XXX -ChangelogEntry "NEW - opis" 3. Upload plików z updates/0.XX/ na serwer aktualizacji ``` ### Użycie build-update.ps1 ```powershell # Podgląd zmian (bez tworzenia plików) ./build-update.ps1 -ToTag v0.301 -DryRun # Budowanie paczki (auto-detect poprzedniego tagu) ./build-update.ps1 -ToTag v0.301 -ChangelogEntry "NEW - opis zmiany" # Z jawnym tagiem źródłowym ./build-update.ps1 -FromTag v0.300 -ToTag v0.301 -ChangelogEntry "NEW - opis" ``` ### Co robi skrypt automatycznie 1. `git diff --name-status` między tagami → listy dodanych/zmodyfikowanych/usuniętych plików 2. Filtrowanie przez `.updateignore` (pliki deweloperskie, konfiguracyjne itp.) 3. Kopiowanie plików do temp, tworzenie ZIP 4. SHA256 checksum ZIP-a 5. Generowanie `ver_X.XXX_manifest.json` 6. Generowanie legacy `_sql.txt` i `_files.txt` (okres przejściowy) 7. Aktualizacja `versions.php` i `changelog.php` 8. Cleanup ### Pliki wynikowe - `updates/0.XX/ver_X.XXX.zip` — paczka z plikami - `updates/0.XX/ver_X.XXX_manifest.json` — manifest z checksumem, listą zmian, SQL - `updates/0.XX/ver_X.XXX_sql.txt` — legacy SQL (okres przejściowy) - `updates/0.XX/ver_X.XXX_files.txt` — legacy lista plików do usunięcia (okres przejściowy) ### Migracje SQL Pliki SQL umieszczaj w `migrations/{version}.sql` (np. `migrations/0.301.sql`). Build script automatycznie je wczyta i umieści w manifeście + legacy `_sql.txt`. ### Format manifestu ```json { "version": "0.301", "date": "2026-02-22", "checksum_zip": "sha256:abc123...", "files": { "modified": ["autoload/Domain/Order/OrderRepository.php"], "added": ["autoload/Domain/Order/NewHelper.php"], "deleted": ["autoload/shop/OldClass.php"] }, "directories_deleted": [], "sql": ["ALTER TABLE pp_x ADD COLUMN y INT DEFAULT 0"], "changelog": "NEW - opis zmiany" } ``` ### .updateignore Plik w katalogu głównym projektu, wzorce plików wykluczonych z paczek (jak `.gitignore`). ### INFO pamiętaj że push czasem zwraca błąd autoryzacji, wtedy spróbuj ponownie