fix(deploy): preserve host preland config
This commit is contained in:
1 parent
67379241aa
commit
ed1e476cc6
7 files changed
+169
-21
No files matched your search
@@ -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);
|
||||
Reference in new issue
Block a user