| @@ -1,4 +1,4 @@ | |||
| 1 | - | Сейчас satisfactory-cli.php сломается, если нет папки vendor (чего не бывает, когда сервис собран в PHAR и запущен на сервере). У меня два решения - мы либо собираем отдельный satisfactory-cli.phar, либо добавляем кли-команды к основному server.php / satisfactory.phar - но тогда надо менять механизм вызовов. Например, вызывать сервер с ключом --serve (то есть satisfactory.phar --serve --config=/path/to/config --verbose), а cli-команды - без --serve . Что думаешь? | |
| 1 | + | > Сейчас satisfactory-cli.php сломается, если нет папки vendor (чего не бывает, когда сервис собран в PHAR и запущен на сервере). У меня два решения - мы либо собираем отдельный satisfactory-cli.phar, либо добавляем кли-команды к основному server.php / satisfactory.phar - но тогда надо менять механизм вызовов. Например, вызывать сервер с ключом --serve (то есть satisfactory.phar --serve --config=/path/to/config --verbose), а cli-команды - без --serve . Что думаешь? | |
| 2 | 2 | ||
| 3 | 3 | Ключевой факт: внутри `satisfactory.phar` уже есть **всё**, что нужно CLI — `app/*.php` (AppConfig/Database/Setup) и `vendor/` (включая `arris.toolkit.cli-console` — он в `require`). В phar не попадает только сам файл `satisfactory-cli.php` (~180 строк задач). Поэтому: | |
| 4 | 4 | ||
KarelWintersky / satisfactory-cli.md
Last active 2 days ago
KarelWintersky revised this gist 2 days ago · 475d4a2
1 file changed, 1 insertion, 1 deletion
KarelWintersky revised this gist 2 days ago · 5e44e0d
1 file changed, 20 insertions
| @@ -0,0 +1,20 @@ | |||
| 1 | + | Сейчас satisfactory-cli.php сломается, если нет папки vendor (чего не бывает, когда сервис собран в PHAR и запущен на сервере). У меня два решения - мы либо собираем отдельный satisfactory-cli.phar, либо добавляем кли-команды к основному server.php / satisfactory.phar - но тогда надо менять механизм вызовов. Например, вызывать сервер с ключом --serve (то есть satisfactory.phar --serve --config=/path/to/config --verbose), а cli-команды - без --serve . Что думаешь? | |
| 2 | + | ||
| 3 | + | Ключевой факт: внутри `satisfactory.phar` уже есть **всё**, что нужно CLI — `app/*.php` (AppConfig/Database/Setup) и `vendor/` (включая `arris.toolkit.cli-console` — он в `require`). В phar не попадает только сам файл `satisfactory-cli.php` (~180 строк задач). Поэтому: | |
| 4 | + | ||
| 5 | + | **Моё мнение: вариант 2 (CLI в основном phar).** Отдельный `satisfactory-cli.phar` дублирует весь код (server + app + vendor ≈ тот же размер) ради 180 строк — два артефакта, две сборки в `build.sh`, два файла в DEB и makefile install. Никакого выигрыша по размеру или изоляции. | |
| 6 | + | ||
| 7 | + | **Но с одной поправкой к твоей схеме.** Если сделать `--serve` обязательным, то после обновления phar без синхронного обновления юнита сервис молча падает: текущий `ExecStart` в `debian/satisfactory.service` — `--config=... --verbose` **без** `--serve` → попадёт в CLI-режим «нет задач» → exit(1). Это футган на деплое (на боевой машине юнит обновляется отдельно от phar). | |
| 8 | + | ||
| 9 | + | Предлагаю обратную диспетчеризацию — сервер остаётся дефолтом, CLI маркируется своими флагами: | |
| 10 | + | ||
| 11 | + | - `satisfactory.phar --serve --config=... --verbose` → сервер (явно) | |
| 12 | + | - `satisfactory.phar --config=... --verbose` → сервер (старый юнит продолжает работать без правок) | |
| 13 | + | - `satisfactory.phar --delete=vendor/pkg` / `--clear` / `--help` → CLI (и `--config` общий для обоих режимов) | |
| 14 | + | ||
| 15 | + | Реализация тривиальная: перенести `deletePackage`/`clearCache`/`removeTree` в `app/CLI.php` (finder box.json подхватит автоматически), а в `server.php` сделать роутинг по флагам перед стартом сервера. `App::init()` и так уже грузит+валидирует конфиг — CLI переиспользует его. | |
| 16 | + | ||
| 17 | + | Если ок — реализую. Если принципиально «`--serve` обязателен», тогда аккуратно поправим `debian/satisfactory.service` и README в той же итерации, но живой юнит на сервере всё равно придётся обновить руками. | |
| 18 | + | ||
| 19 | + | --- | |
| 20 | + | ||