52 lines
1.5 KiB
Python
52 lines
1.5 KiB
Python
from __future__ import annotations
|
|
|
|
from typing import Any
|
|
|
|
from yuxi.utils.logging_config import logger
|
|
|
|
|
|
_LEGACY_KEY_MAP: dict[str, str] = {
|
|
"allow_private_network": "network.dangerously_allow_private_network",
|
|
"allowPrivateNetwork": "network.dangerouslyAllowPrivateNetwork",
|
|
}
|
|
|
|
|
|
def create_legacy_private_network_doctor_contract(
|
|
config: dict[str, Any],
|
|
) -> list[dict[str, str]]:
|
|
migrations: list[dict[str, str]] = []
|
|
for legacy_key, new_key in _LEGACY_KEY_MAP.items():
|
|
if legacy_key in config:
|
|
migrations.append(
|
|
{
|
|
"from": legacy_key,
|
|
"to": new_key,
|
|
"value": config[legacy_key],
|
|
}
|
|
)
|
|
return migrations
|
|
|
|
|
|
def apply_doctor_migrations(
|
|
config: dict[str, Any],
|
|
migrations: list[dict[str, str]],
|
|
) -> dict[str, Any]:
|
|
config = dict(config)
|
|
for mig in migrations:
|
|
legacy_key = mig["from"]
|
|
new_key = mig["to"]
|
|
value = mig["value"]
|
|
|
|
config.setdefault("network", {})
|
|
config["network"]["dangerously_allow_private_network"] = value
|
|
config["network"]["dangerouslyAllowPrivateNetwork"] = value
|
|
|
|
config.pop(legacy_key, None)
|
|
logger.info(f"[Urbit] Doctor: migrated {legacy_key} → {new_key} = {value}")
|
|
|
|
return config
|
|
|
|
|
|
def is_legacy_private_network_config(config: dict[str, Any]) -> bool:
|
|
return "allow_private_network" in config or "allowPrivateNetwork" in config
|