package module: add ftbfs info

parent 2aebb41e
from telegrinder import Dispatch, Message from telegrinder import Dispatch, Message
from telegrinder.rules import Command, Argument from telegrinder.rules import Command, Argument
from telegrinder.tools.formatting import HTMLFormatter, link
from datetime import datetime from datetime import datetime
from altrepo import altrepo from altrepo import altrepo
...@@ -57,7 +59,7 @@ async def package_info_handler( ...@@ -57,7 +59,7 @@ async def package_info_handler(
await m.answer("Ошибка обработки параметров.") await m.answer("Ошибка обработки параметров.")
return 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) packager = DB.maintainer.get(package.packager_nickname)
if arch: if arch:
...@@ -72,6 +74,7 @@ async def package_info_handler( ...@@ -72,6 +74,7 @@ async def package_info_handler(
appstream_names = [package.name] appstream_names = [package.name]
new_version = None new_version = None
ftbfs = None
if not arch: if not arch:
new_version = package.new_version new_version = package.new_version
if new_version: if new_version:
...@@ -81,6 +84,12 @@ async def package_info_handler( ...@@ -81,6 +84,12 @@ async def package_info_handler(
f" Новая версия: {new_version[0].version}-{new_version[0].release}" 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_ids = []
appstream_names = [] appstream_names = []
binary_packages_message = _bold("\n\nБинарные пакеты:\n") binary_packages_message = _bold("\n\nБинарные пакеты:\n")
...@@ -107,6 +116,7 @@ async def package_info_handler( ...@@ -107,6 +116,7 @@ async def package_info_handler(
message = ( message = (
f"{_bold("Пакет " + package.name)}\n\n" f"{_bold("Пакет " + package.name)}\n\n"
f"{f"{new_version_message}\n\n" if new_version else ""}" 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"Версия: {package.version}-{package.release}\n"
f"{f"Архитектура: {package.arch}\n" if arch else ""}" f"{f"Архитектура: {package.arch}\n" if arch else ""}"
f"Собран: {buildtime}\n" f"Собран: {buildtime}\n"
...@@ -126,3 +136,17 @@ async def package_info_handler( ...@@ -126,3 +136,17 @@ async def package_info_handler(
appstream_ids, appstream_names appstream_ids, appstream_names
) if appstream_ids else None ) 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