package module: add ftbfs info

parent 2aebb41e
from telegrinder import Dispatch, Message
from telegrinder.rules import Command, Argument
from telegrinder.tools.formatting import HTMLFormatter, link
from datetime import datetime
from altrepo import altrepo
......@@ -57,7 +59,7 @@ async def package_info_handler(
await m.answer("Ошибка обработки параметров.")
return
buildtime = datetime.fromtimestamp(package.buildtime).strftime("%Y-%m-%d %H:%M:%S")
buildtime = await date_format(package.buildtime)
packager = DB.maintainer.get(package.packager_nickname)
if arch:
......@@ -72,6 +74,7 @@ async def package_info_handler(
appstream_names = [package.name]
new_version = None
ftbfs = None
if not arch:
new_version = package.new_version
if new_version:
......@@ -81,6 +84,12 @@ async def package_info_handler(
f" Новая версия: {new_version[0].version}-{new_version[0].release}"
)
ftbfs_message = _bold("Ошибки пересборки:\n")
for beehive in package.beehive:
if beehive.status == "error":
ftbfs = True
ftbfs_message += " " + await ftbfs_message_format(beehive)
appstream_ids = []
appstream_names = []
binary_packages_message = _bold("\n\nБинарные пакеты:\n")
......@@ -90,7 +99,7 @@ async def package_info_handler(
break
binary_packages_message += f" {binary_package.name}"
binary_packages_message += f" ({", ".join(binary_package.archs)})\n"
if not any(skip in binary_package.name for skip in APPSTREAM_SKIP_LIST):
app_id = altrepo.appstream.package.id_by_pkgname(
binary_package.name, branch
......@@ -107,6 +116,7 @@ async def package_info_handler(
message = (
f"{_bold("Пакет " + package.name)}\n\n"
f"{f"{new_version_message}\n\n" if new_version else ""}"
f"{f"{ftbfs_message}\n" if ftbfs else ""}"
f"Версия: {package.version}-{package.release}\n"
f"{f"Архитектура: {package.arch}\n" if arch else ""}"
f"Собран: {buildtime}\n"
......@@ -126,3 +136,17 @@ async def package_info_handler(
appstream_ids, appstream_names
) if appstream_ids else None
)
async def date_format(time) -> str:
if isinstance(time, (int, float)):
dt = datetime.fromtimestamp(time)
elif isinstance(time, str):
dt = datetime.fromisoformat(time)
return dt.strftime("%Y-%m-%d %H:%M:%S")
async def ftbfs_message_format(beehive):
return HTMLFormatter(link(
beehive.url, text=beehive.arch
)) + " | " + await date_format(beehive.updated) + "\n"
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment