mirror of
https://github.com/Shu-Ying/main_plugin_farm.git
synced 2026-10-31 06:49:59 +08:00
fixed # 修复头像框资源位置错误的BUG
This commit is contained in:
@@ -15,15 +15,20 @@ from zhenxun.utils.message import MessageUtils
|
||||
from zhenxun.utils.platform import PlatformUtils
|
||||
|
||||
from .runtime import COMMANDS, Runtime
|
||||
from .data_paths import data_directories
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
driver = get_driver()
|
||||
data_dir, legacy_data_dir = data_directories(
|
||||
DATA_PATH, getattr(driver.config, 'farm_preview_data_dir', None),
|
||||
)
|
||||
runtime = Runtime(
|
||||
getattr(driver.config, "farm_preview_data_dir", DATA_PATH / "farm_preview"),
|
||||
data_dir,
|
||||
getattr(driver.config, "farm_preview_font", None),
|
||||
getattr(driver.config, "farm_preview_deployment", "zhenxun-preview"),
|
||||
str(getattr(driver.config, "farm_preview_image_format", "AUTO")).upper(),
|
||||
font_dir=FONT_PATH,
|
||||
legacy_data_dir=legacy_data_dir,
|
||||
)
|
||||
driver.on_startup(runtime.start)
|
||||
driver.on_shutdown(runtime.close)
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
"""农场默认目录与旧预览目录的无覆盖迁移。"""
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
def data_directories(base, configured=None):
|
||||
if configured is not None:
|
||||
return Path(configured), None
|
||||
return Path(base) / 'farm_db', Path(base) / 'farm_preview'
|
||||
|
||||
|
||||
def prepare_directory(target, legacy=None):
|
||||
target = Path(target).absolute()
|
||||
if legacy is not None:
|
||||
legacy = Path(legacy).absolute()
|
||||
if (target.name != 'farm_db' or legacy.name != 'farm_preview'
|
||||
or target.parent != legacy.parent):
|
||||
raise ValueError('Farm migration requires default sibling paths')
|
||||
if target.is_symlink() or legacy.is_symlink():
|
||||
raise ValueError('Farm migration does not follow directory links')
|
||||
if (legacy / 'farm-preview.sqlite3').is_file():
|
||||
if target.exists():
|
||||
raise FileExistsError(
|
||||
'farm_db already exists beside farm_preview; '
|
||||
'select farm_preview_data_dir explicitly before startup'
|
||||
)
|
||||
legacy.rename(target)
|
||||
return True
|
||||
target.mkdir(parents=True, exist_ok=True)
|
||||
return False
|
||||
@@ -12,6 +12,7 @@ from ._vendor.farm_core.storage import SCHEMA_VERSION
|
||||
from ._vendor.farm_core.presentation import receipt_text, snapshot_text
|
||||
from ._vendor.farm_render import FarmRenderer, RenderOptions, RenderService
|
||||
from ._vendor.farm_render.seasons import season_for
|
||||
from .data_paths import prepare_directory
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
COMMANDS = {
|
||||
@@ -65,8 +66,9 @@ def operation_id(bot_id, platform, user_id, message_id, action):
|
||||
|
||||
class Runtime:
|
||||
def __init__(self, data_dir, font_path=None, deployment="zhenxun-preview",
|
||||
image_format="AUTO", *, font_dir=None):
|
||||
image_format="AUTO", *, font_dir=None, legacy_data_dir=None):
|
||||
self.data_dir = Path(data_dir).resolve()
|
||||
self.legacy_data_dir = legacy_data_dir
|
||||
self.font_path = font_path
|
||||
self.font_dir = Path(font_dir or "resources/font")
|
||||
self.deployment = deployment
|
||||
@@ -80,7 +82,7 @@ class Runtime:
|
||||
async def start(self):
|
||||
if self.started:
|
||||
return
|
||||
self.data_dir.mkdir(parents=True, exist_ok=True)
|
||||
migrated = prepare_directory(self.data_dir, self.legacy_data_dir)
|
||||
self.log_handler = logging.FileHandler(
|
||||
self.data_dir / "farm-preview.log", encoding="utf-8",
|
||||
)
|
||||
@@ -89,6 +91,8 @@ class Runtime:
|
||||
))
|
||||
logging.getLogger(__package__).setLevel(logging.INFO)
|
||||
logging.getLogger(__package__).addHandler(self.log_handler)
|
||||
if migrated:
|
||||
logger.info('farm data directory migrated farm_preview -> farm_db')
|
||||
try:
|
||||
await self.store.initialize(catalogue=self.service.catalogue)
|
||||
except Exception:
|
||||
|
||||
Reference in New Issue
Block a user