fix(deploy): preserve host preland config

This commit is contained in:
Panfilov Konstantin committed 2026-10-17 19:17:56 +03:00
1 parent 67379241aa
commit ed1e476cc6
7 files changed
+169 -21

No files matched your search

+68
View File
@@ -0,0 +1,68 @@
<?php
/**
* Точечно добавляет новую UTM focus в рабочий конфиг приленда на хостинге.
*
* Значения уже существующих полей конфигурации намеренно не нормализуются и
* не переписываются: владелец настраивает их непосредственно на стенде или
* production. Скрипт возвращает 0, когда focus уже существует, и 10, когда
* ключ добавлен и config.json требуется загрузить обратно.
*
* @usage php bin/ensure-focus-config.php /path/to/config.json
*/
declare(strict_types=1);
if ($argc !== 2) {
fwrite(STDERR, "Использование: php bin/ensure-focus-config.php /path/to/config.json\n");
exit(2);
}
$path = $argv[1];
$raw = @file_get_contents($path);
if ($raw === false) {
fwrite(STDERR, "Не удалось прочитать config.json.\n");
exit(2);
}
try {
$config = json_decode($raw, true, 512, JSON_THROW_ON_ERROR);
} catch (JsonException $exception) {
fwrite(STDERR, "config.json содержит некорректный JSON: {$exception->getMessage()}\n");
exit(2);
}
if (!is_array($config) || !isset($config['utm']) || !is_array($config['utm'])) {
fwrite(STDERR, "В config.json отсутствует объект utm.\n");
exit(2);
}
if (array_key_exists('focus', $config['utm'])) {
fwrite(STDOUT, "focus уже настроен: конфиг не изменён.\n");
exit(0);
}
$config['utm']['focus'] = [
'weights' => [
'center' => 0,
'face' => 1,
],
'default' => 'face',
];
try {
$encoded = json_encode(
$config,
JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_THROW_ON_ERROR
) . "\n";
} catch (JsonException $exception) {
fwrite(STDERR, "Не удалось сериализовать config.json: {$exception->getMessage()}\n");
exit(2);
}
if (file_put_contents($path, $encoded, LOCK_EX) === false) {
fwrite(STDERR, "Не удалось записать обновлённый config.json.\n");
exit(2);
}
fwrite(STDOUT, "Добавлен только utm.focus (face включён по умолчанию).\n");
exit(10);