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);