#!/usr/bin/env bash
# Лидерра тест-сервер — применить обновление (server-side половина).
# ПЕРЕД запуском: с dev-машины залить новый код (git archive app db) + сборку
# (app/public/build) через scp. Затем на сервере: bash /var/www/liderra/redeploy.sh
set -euo pipefail
cd /var/www/liderra/app
# vendor/ принадлежит www-data, а скрипт бежит от ubuntu → composer install от
# ubuntu падает "autoload_classmap.php: Permission denied" и (из-за set -e) рвёт
# деплой ДО кэшей/рестарта → прод 500. Инцидент 23.06.2026. Поэтому composer
# запускаем от root (COMPOSER_ALLOW_SUPERUSER) и возвращаем владельца vendor www-data.
sudo env COMPOSER_ALLOW_SUPERUSER=1 composer install --optimize-autoloader --no-interaction --no-scripts --ignore-platform-req=ext-redis
sudo chown -R www-data:www-data vendor
# NB: миграции crm_migrator-owned таблиц (напр. saas_transactions) штатной .env-ролью
# НЕ применяются ("must be owner") — применять ВРУЧНУЮ под `sudo -u postgres` ДО запуска
# скрипта + INSERT в migrations, тогда строка ниже = no-op. Иначе set -e порвёт деплой.
php artisan migrate --force
sudo chmod -R a+rX public/build
sudo chown -R ubuntu:www-data storage bootstrap/cache
sudo chmod -R 775 storage bootstrap/cache
# Квирк 107 (config.php): РЕАЛЬНО важна ЧИТАЕМОСТЬ www-data, а не владелец —
# `ubuntu:www-data 775` тоже читаем группой и портал работает (валидатор П1 проверяет
# именно `test -r`). Для чистоты делаем владельца www-data: rm старых кэшей + optimize
# ПОСЛЕДНИМ под www-data. Важно: optimize перезаписывает существующий config.php
# in-place (file_put_contents НЕ меняет владельца), поэтому без rm файл остаётся
# ubuntu — отсюда и удаление перед пересборкой. dir bootstrap/cache 775 (группа
# www-data) → www-data создаёт свежие config/routes/events/views как www-data:www-data.
sudo rm -f bootstrap/cache/config.php bootstrap/cache/routes-v7.php bootstrap/cache/events.php
sudo -u www-data php artisan optimize
sudo systemctl restart php8.3-fpm liderra-queue
echo "Redeploy done at $(date -u +%FT%TZ)"
