change telegram default index to telegram-index

This commit is contained in:
Evgenii Alekseev 2022-04-08 04:06:38 +03:00
parent dd521b49b5
commit 5ff2f43506
8 changed files with 13 additions and 14 deletions

View File

@ -13,7 +13,7 @@ Wrapper for managing custom repository inspired by [repo-scripts](https://github
* Multi-architecture support. * Multi-architecture support.
* VCS packages support. * VCS packages support.
* Sign support with gpg (repository, package, per package settings). * Sign support with gpg (repository, package, per package settings).
* Synchronization to remote services (rsync, s3 and github) and report generation (html). * Synchronization to remote services (rsync, s3 and github) and report generation (email, html, telegram).
* Dependency manager. * Dependency manager.
* Ability to patch AUR packages and even create package from local PKGBUILDs. * Ability to patch AUR packages and even create package from local PKGBUILDs.
* Repository status interface with optional authorization and control options: * Repository status interface with optional authorization and control options:

View File

@ -124,6 +124,7 @@ Section name must be either `telegram` (plus optional architecture name, e.g. `t
* `homepage` - link to homepage, string, optional. * `homepage` - link to homepage, string, optional.
* `link_path` - prefix for HTML links, string, required. * `link_path` - prefix for HTML links, string, required.
* `template_path` - path to Jinja2 template, string, required. * `template_path` - path to Jinja2 template, string, required.
* `template_type` - `parse_mode` to be passed to telegram API, one of `MarkdownV2`, `HTML`, `Markdown`, string, optional, default `HTML`.
## `upload` group ## `upload` group

View File

@ -46,7 +46,7 @@ ssl = disabled
template_path = /usr/share/ahriman/templates/repo-index.jinja2 template_path = /usr/share/ahriman/templates/repo-index.jinja2
[telegram] [telegram]
template_path = /usr/share/ahriman/templates/telegram.jinja2 template_path = /usr/share/ahriman/templates/telegram-index.jinja2
[upload] [upload]
target = target =

View File

@ -1,10 +1,5 @@
{#simplified version of full report, now in markdown#} {#simplified version of full report#}
## {{ repository }} update <b>{{ repository }} update</b>
{% for package in packages %} {% for package in packages %}
* [{{ package.name }}]({{ link_path }}/{{ package.filename }}) {{ package.version }} at {{ package.build_date }} <a href="{{ link_path }}/{{ package.filename }}">{{ package.name }}</a> {{ package.version }} at {{ package.build_date }}
{% endfor %} {% endfor %}
{% if homepage is not none %}
[Repository]({{ homepage }})
{% endif %}

View File

@ -67,6 +67,7 @@ setup(
"package/share/ahriman/templates/build-status.jinja2", "package/share/ahriman/templates/build-status.jinja2",
"package/share/ahriman/templates/email-index.jinja2", "package/share/ahriman/templates/email-index.jinja2",
"package/share/ahriman/templates/repo-index.jinja2", "package/share/ahriman/templates/repo-index.jinja2",
"package/share/ahriman/templates/telegram-index.jinja2",
]), ]),
("share/ahriman/templates/build-status", [ ("share/ahriman/templates/build-status", [
"package/share/ahriman/templates/build-status/login-modal.jinja2", "package/share/ahriman/templates/build-status/login-modal.jinja2",

View File

@ -38,6 +38,7 @@ class Telegram(Report, JinjaTemplate):
:ivar api_key: bot api key :ivar api_key: bot api key
:ivar chat_id: chat id to post message, either string with @ or integer :ivar chat_id: chat id to post message, either string with @ or integer
:ivar template_path: path to template for built packages :ivar template_path: path to template for built packages
:ivar template_type: template message type to be used in parse mode, one of MarkdownV2, HTML, Markdown
""" """
TELEGRAM_API_URL = "https://api.telegram.org" TELEGRAM_API_URL = "https://api.telegram.org"
@ -56,6 +57,7 @@ class Telegram(Report, JinjaTemplate):
self.api_key = configuration.get(section, "api_key") self.api_key = configuration.get(section, "api_key")
self.chat_id = configuration.get(section, "chat_id") self.chat_id = configuration.get(section, "chat_id")
self.template_path = configuration.getpath(section, "template_path") self.template_path = configuration.getpath(section, "template_path")
self.template_type = configuration.get(section, "template_type", fallback="HTML")
def _send(self, text: str) -> None: def _send(self, text: str) -> None:
""" """
@ -65,7 +67,7 @@ class Telegram(Report, JinjaTemplate):
try: try:
response = requests.post( response = requests.post(
f"{self.TELEGRAM_API_URL}/bot{self.api_key}/sendMessage", f"{self.TELEGRAM_API_URL}/bot{self.api_key}/sendMessage",
data={"chat_id": self.chat_id, "text": text}) data={"chat_id": self.chat_id, "text": text, "parse_mode": self.template_type})
response.raise_for_status() response.raise_for_status()
except requests.HTTPError as e: except requests.HTTPError as e:
self.logger.exception("could not perform request: %s", exception_response_text(e)) self.logger.exception("could not perform request: %s", exception_response_text(e))

View File

@ -87,7 +87,7 @@ def test_fetch_new(mocker: MockerFixture) -> None:
local = Path("local") local = Path("local")
Sources.fetch(local, "remote") Sources.fetch(local, "remote")
check_output_mock.assert_has_calls([ check_output_mock.assert_has_calls([
mock.call("git", "clone", "remote", str(local), exception=None, logger=pytest.helpers.anyvar(int)), mock.call("git", "clone", "remote", str(local), exception=None, cwd=local, logger=pytest.helpers.anyvar(int)),
mock.call("git", "checkout", "--force", Sources._branch, mock.call("git", "checkout", "--force", Sources._branch,
exception=None, cwd=local, logger=pytest.helpers.anyvar(int)), exception=None, cwd=local, logger=pytest.helpers.anyvar(int)),
mock.call("git", "reset", "--hard", f"origin/{Sources._branch}", mock.call("git", "reset", "--hard", f"origin/{Sources._branch}",

View File

@ -20,7 +20,7 @@ def test_send(configuration: Configuration, mocker: MockerFixture) -> None:
report._send("a text") report._send("a text")
request_mock.assert_called_once_with( request_mock.assert_called_once_with(
pytest.helpers.anyvar(str, strict=True), pytest.helpers.anyvar(str, strict=True),
data={"chat_id": pytest.helpers.anyvar(str, strict=True), "text": "a text"}) data={"chat_id": pytest.helpers.anyvar(str, strict=True), "text": "a text", "parse_mode": "HTML"})
def test_send_failed(configuration: Configuration, mocker: MockerFixture) -> None: def test_send_failed(configuration: Configuration, mocker: MockerFixture) -> None: