Co-authored-by: Dt8333 <25431943+Dt8333@users.noreply.github.com> Co-authored-by: Soulter <905617992@qq.com>
77 lines
2.6 KiB
Python
77 lines
2.6 KiB
Python
from pathlib import Path
|
|
|
|
import click
|
|
|
|
|
|
def check_astrbot_root(path: str | Path) -> bool:
|
|
"""检查路径是否为 AstrBot 根目录"""
|
|
if not isinstance(path, Path):
|
|
path = Path(path)
|
|
if not path.exists() or not path.is_dir():
|
|
return False
|
|
if not (path / ".astrbot").exists():
|
|
return False
|
|
return True
|
|
|
|
|
|
def get_astrbot_root() -> Path:
|
|
"""获取Astrbot根目录路径"""
|
|
return Path.cwd()
|
|
|
|
|
|
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
|