Files
AstrBot/astrbot/cli/utils/basic.py
2025-11-03 23:28:13 +08:00

86 lines
2.9 KiB
Python

import warnings
from pathlib import Path
import click
from astrbot_api.abc import IAstrbotPaths
from astrbot_sdk import sync_base_container
AstrbotPaths = sync_base_container.get(type[IAstrbotPaths])
def check_astrbot_root(path: str | Path) -> bool:
"""检查路径是否为 AstrBot 根目录"""
warnings.warn(
"请使用 AstrbotPaths 类代替本模块中的函数",
DeprecationWarning,
stacklevel=2,
)
return AstrbotPaths.is_root(Path(path))
def get_astrbot_root() -> Path:
"""获取Astrbot根目录路径"""
warnings.warn(
"请使用 AstrbotPaths 类代替本模块中的函数",
DeprecationWarning,
stacklevel=2,
)
return AstrbotPaths.astrbot_root
async def check_dashboard(astrbot_root: Path) -> None:
"""检查是否安装了dashboard"""
from astrbot.core.config.default import VERSION
from astrbot.core.utils.io import download_dashboard, get_dashboard_version
from .version_comparator import VersionComparator
try:
dashboard_version = await get_dashboard_version()
match dashboard_version:
case None:
click.echo("未安装管理面板")
if click.confirm(
"是否安装管理面板?",
default=True,
abort=True,
):
click.echo("正在安装管理面板...")
await download_dashboard(
path="data/dashboard.zip",
extract_path=str(astrbot_root),
version=f"v{VERSION}",
latest=False,
)
click.echo("管理面板安装完成")
case str():
if VersionComparator.compare_version(VERSION, dashboard_version) <= 0:
click.echo("管理面板已是最新版本")
return
try:
version = dashboard_version.split("v")[1]
click.echo(f"管理面板版本: {version}")
await download_dashboard(
path="data/dashboard.zip",
extract_path=str(astrbot_root),
version=f"v{VERSION}",
latest=False,
)
except Exception as e:
click.echo(f"下载管理面板失败: {e}")
return
except FileNotFoundError:
click.echo("初始化管理面板目录...")
try:
await download_dashboard(
path=str(astrbot_root / "dashboard.zip"),
extract_path=str(astrbot_root),
version=f"v{VERSION}",
latest=False,
)
click.echo("管理面板初始化完成")
except Exception as e:
click.echo(f"下载管理面板失败: {e}")
return