mirror of
https://github.com/AstrBotDevs/AstrBot
synced 2026-07-15 17:30:13 +08:00
33 lines
1.1 KiB
Python
33 lines
1.1 KiB
Python
import re
|
|
from importlib.metadata import PackageNotFoundError
|
|
from importlib.metadata import version as package_version
|
|
from pathlib import Path
|
|
|
|
try:
|
|
import tomllib
|
|
except ModuleNotFoundError:
|
|
tomllib = None
|
|
|
|
try:
|
|
__version__ = package_version("astrbot")
|
|
except PackageNotFoundError:
|
|
pyproject_path = Path(__file__).resolve().parents[2] / "pyproject.toml"
|
|
try:
|
|
if tomllib is None:
|
|
match = re.search(
|
|
r"(?m)^version\s*=\s*[\"']([^\"']+)[\"']",
|
|
pyproject_path.read_text(encoding="utf-8"),
|
|
)
|
|
__version__ = match.group(1) if match else "0.0.0"
|
|
else:
|
|
with pyproject_path.open("rb") as f:
|
|
__version__ = tomllib.load(f)["project"]["version"]
|
|
except (FileNotFoundError, IndexError, KeyError, TypeError, ValueError):
|
|
__version__ = "0.0.0"
|
|
|
|
match = re.match(r"^(\d+(?:\.\d+)*)(a|b|rc)(\d+)$", __version__)
|
|
if match:
|
|
release, prerelease, number = match.groups()
|
|
prerelease = {"a": "alpha", "b": "beta", "rc": "rc"}[prerelease]
|
|
__version__ = f"{release}-{prerelease}.{number}"
|