From 1e19d21881d2d67cf503961ded85994e96a585cb Mon Sep 17 00:00:00 2001 From: iphydf Date: Sun, 26 Jan 2025 11:17:50 +0000 Subject: [PATCH] feat(Groupbot): Add `!gh update` command to pull issue updates. This pulls from the backup, so it'll only be as up-to-date as the backup repo. --- pytox/toxcore/tox.pxd | 6 +-- pytox/toxcore/tox.pyi | 2 +- pytox/toxcore/tox.pyx | 72 ++++++++++++++++++++++++++++--- test/tox_options_test.py | 4 +- tools/groupbot/api.py | 2 +- tools/groupbot/groupbot.py | 2 +- tools/groupbot/groupbot.tox | Bin 40894 -> 52979 bytes tools/groupbot/plugins/github.py | 57 +++++++++++++++++------- 8 files changed, 116 insertions(+), 29 deletions(-) diff --git a/pytox/toxcore/tox.pxd b/pytox/toxcore/tox.pxd index d144b54..4099251 100644 --- a/pytox/toxcore/tox.pxd +++ b/pytox/toxcore/tox.pxd @@ -476,9 +476,9 @@ cdef extern from "tox/tox.h": cdef void tox_options_set_hole_punching_enabled(Tox_Options* self, bool hole_punching_enabled) cdef Tox_Savedata_Type tox_options_get_savedata_type(const Tox_Options* self) cdef void tox_options_set_savedata_type(Tox_Options* self, Tox_Savedata_Type savedata_type) - cdef size_t tox_options_get_savedata_length(const Tox_Options* self) - cdef const uint8_t* tox_options_get_savedata_data(const Tox_Options* self) - cdef bool tox_options_set_savedata_data(Tox_Options* self, const uint8_t* savedata_data, size_t length) + cdef bool tox_options_get_savedata(const Tox_Options* self, uint8_t* savedata) + cdef size_t tox_options_get_savedata_size(const Tox_Options* self) + cdef bool tox_options_set_savedata(Tox_Options* self, const uint8_t* savedata_data, size_t length) cdef bool tox_options_get_experimental_owned_data(const Tox_Options* self) cdef void tox_options_set_experimental_owned_data(Tox_Options* self, bool experimental_owned_data) cdef bool tox_options_get_experimental_thread_safety(const Tox_Options* self) diff --git a/pytox/toxcore/tox.pyi b/pytox/toxcore/tox.pyi index 2bd1cfb..9efb87f 100644 --- a/pytox/toxcore/tox.pyi +++ b/pytox/toxcore/tox.pyi @@ -100,7 +100,7 @@ class Tox_Options_Ptr: proxy_host: str proxy_port: int proxy_type: Tox_Proxy_Type - savedata_data: bytes + savedata: bytes savedata_type: Tox_Savedata_Type start_port: int tcp_port: int diff --git a/pytox/toxcore/tox.pyx b/pytox/toxcore/tox.pyx index 81f5da2..e8a6e8a 100644 --- a/pytox/toxcore/tox.pyx +++ b/pytox/toxcore/tox.pyx @@ -320,12 +320,20 @@ cdef class Tox_Options_Ptr: tox_options_set_savedata_type(self._get(), savedata_type) @property - def savedata_data(self) -> bytes: - return tox_options_get_savedata_data(self._get())[:tox_options_get_savedata_length(self._get())] + def savedata(self) -> bytes: + cdef size_t size = tox_options_get_savedata_size(self._get()) + cdef uint8_t* data = malloc(size) + if data is NULL: + raise MemoryError() + try: + tox_options_get_savedata(self._get(), data) + return bytes(data[:size]) + finally: + free(data) - @savedata_data.setter - def savedata_data(self, savedata_data: bytes): - tox_options_set_savedata_data(self._get(), savedata_data, len(savedata_data)) + @savedata.setter + def savedata(self, savedata: bytes): + tox_options_set_savedata(self._get(), savedata, len(savedata)) @property def experimental_owned_data(self) -> bool: @@ -475,6 +483,8 @@ cdef class Tox_Ptr: def savedata(self) -> bytes: cdef size_t size = tox_get_savedata_size(self._get()) cdef uint8_t *data = malloc(size * sizeof(uint8_t)) + if data is NULL: + raise MemoryError() try: tox_get_savedata(self._get(), data) return data[:size] @@ -508,6 +518,8 @@ cdef class Tox_Ptr: def address(self) -> bytes: cdef size_t size = tox_address_size() cdef uint8_t *data = malloc(size * sizeof(uint8_t)) + if data is NULL: + raise MemoryError() try: tox_self_get_address(self._get(), data) return data[:size] @@ -518,6 +530,8 @@ cdef class Tox_Ptr: def public_key(self) -> bytes: cdef size_t size = tox_public_key_size() cdef uint8_t *data = malloc(size * sizeof(uint8_t)) + if data is NULL: + raise MemoryError() try: tox_self_get_public_key(self._get(), data) return data[:tox_public_key_size()] @@ -528,6 +542,8 @@ cdef class Tox_Ptr: def dht_id(self) -> bytes: cdef size_t size = tox_public_key_size() cdef uint8_t *data = malloc(size * sizeof(uint8_t)) + if data is NULL: + raise MemoryError() try: tox_self_get_dht_id(self._get(), data) return data[:tox_public_key_size()] @@ -554,6 +570,8 @@ cdef class Tox_Ptr: def secret_key(self) -> bytes: cdef size_t size = tox_secret_key_size() cdef uint8_t *data = malloc(size * sizeof(uint8_t)) + if data is NULL: + raise MemoryError() try: tox_self_get_secret_key(self._get(), data) return data[:tox_secret_key_size()] @@ -564,6 +582,8 @@ cdef class Tox_Ptr: def name(self) -> bytes: cdef size_t size = tox_self_get_name_size(self._get()) cdef uint8_t *data = malloc(size * sizeof(uint8_t)) + if data is NULL: + raise MemoryError() try: tox_self_get_name(self._get(), data) return data[:size] @@ -581,6 +601,8 @@ cdef class Tox_Ptr: def status_message(self) -> bytes: cdef size_t size = tox_self_get_status_message_size(self._get()) cdef uint8_t *data = malloc(size * sizeof(uint8_t)) + if data is NULL: + raise MemoryError() try: tox_self_get_status_message(self._get(), data) return data[:size] @@ -631,6 +653,8 @@ cdef class Tox_Ptr: def friend_list(self) -> list[Tox_Friend_Number]: cdef size_t size = tox_self_get_friend_list_size(self._get()) cdef Tox_Friend_Number *data = malloc(size * sizeof(Tox_Friend_Number)) + if data is NULL: + raise MemoryError() try: tox_self_get_friend_list(self._get(), data) return [data[i] for i in range(size)] @@ -640,6 +664,8 @@ cdef class Tox_Ptr: def friend_get_public_key(self, friend_number: Tox_Friend_Number) -> bytes: cdef size_t size = tox_public_key_size() cdef uint8_t *data = malloc(size * sizeof(uint8_t)) + if data is NULL: + raise MemoryError() cdef Tox_Err_Friend_Get_Public_Key err = TOX_ERR_FRIEND_GET_PUBLIC_KEY_OK try: tox_friend_get_public_key(self._get(), friend_number, data, &err) @@ -662,6 +688,8 @@ cdef class Tox_Ptr: if err: raise ApiException(Tox_Err_Friend_Query(err)) cdef uint8_t *data = malloc(size * sizeof(uint8_t)) + if data is NULL: + raise MemoryError() try: tox_friend_get_status_message(self._get(), friend_number, data, &err) if err: @@ -676,6 +704,8 @@ cdef class Tox_Ptr: if err: raise ApiException(Tox_Err_Friend_Query(err)) cdef uint8_t *data = malloc(size * sizeof(uint8_t)) + if data is NULL: + raise MemoryError() try: tox_friend_get_name(self._get(), friend_number, data, &err) if err: @@ -734,6 +764,8 @@ cdef class Tox_Ptr: cdef Tox_Err_File_Get err = TOX_ERR_FILE_GET_OK cdef size_t size = tox_file_id_length() cdef uint8_t *data = malloc(size * sizeof(uint8_t)) + if data is NULL: + raise MemoryError() try: tox_file_get_file_id(self._get(), friend_number, file_number, data, &err) if err: @@ -806,6 +838,8 @@ cdef class Tox_Ptr: if err: raise ApiException(Tox_Err_Conference_Title(err)) cdef uint8_t *data = malloc(size * sizeof(uint8_t)) + if data is NULL: + raise MemoryError() try: tox_conference_get_title(self._get(), conference_number, data, &err) if err: @@ -846,6 +880,8 @@ cdef class Tox_Ptr: if err: raise ApiException(Tox_Err_Conference_Peer_Query(err)) cdef uint8_t *data = malloc(size * sizeof(uint8_t)) + if data is NULL: + raise MemoryError() try: tox_conference_peer_get_name(self._get(), conference_number, peer_number, data, &err) if err: @@ -860,6 +896,8 @@ cdef class Tox_Ptr: if err: raise ApiException(Tox_Err_Conference_Peer_Query(err)) cdef uint8_t *data = malloc(size * sizeof(uint8_t)) + if data is NULL: + raise MemoryError() try: tox_conference_offline_peer_get_name(self._get(), conference_number, offline_peer_number, data, &err) if err: @@ -872,6 +910,8 @@ cdef class Tox_Ptr: cdef Tox_Err_Conference_Peer_Query err = TOX_ERR_CONFERENCE_PEER_QUERY_OK cdef size_t size = tox_public_key_size() cdef uint8_t *data = malloc(size * sizeof(uint8_t)) + if data is NULL: + raise MemoryError() try: tox_conference_peer_get_public_key(self._get(), conference_number, peer_number, data, &err) if err: @@ -884,6 +924,8 @@ cdef class Tox_Ptr: cdef Tox_Err_Conference_Peer_Query err = TOX_ERR_CONFERENCE_PEER_QUERY_OK cdef size_t size = tox_public_key_size() cdef uint8_t *data = malloc(size * sizeof(uint8_t)) + if data is NULL: + raise MemoryError() try: tox_conference_offline_peer_get_public_key(self._get(), conference_number, offline_peer_number, data, &err) if err: @@ -910,6 +952,8 @@ cdef class Tox_Ptr: def conference_chatlist(self) -> list[Tox_Conference_Number]: cdef size_t size = tox_conference_get_chatlist_size(self._get()) cdef Tox_Conference_Number *data = malloc(size * sizeof(Tox_Conference_Number)) + if data is NULL: + raise MemoryError() try: tox_conference_get_chatlist(self._get(), data) return [data[i] for i in range(size)] @@ -919,6 +963,8 @@ cdef class Tox_Ptr: def conference_get_id(self, conference_number: Tox_Conference_Number) -> bytes: cdef size_t size = tox_conference_id_size() cdef uint8_t *data = malloc(size * sizeof(uint8_t)) + if data is NULL: + raise MemoryError() try: if not tox_conference_get_id(self._get(), conference_number, data): raise ApiException(0) # TODO(iphydf): There's no error enum for this. Make one. @@ -947,6 +993,8 @@ cdef class Tox_Ptr: if err: raise ApiException(Tox_Err_Group_Self_Query(err)) cdef uint8_t *data = malloc(size * sizeof(uint8_t)) + if data is NULL: + raise MemoryError() try: tox_group_self_get_name(self._get(), group_number, data, &err) if err: @@ -992,6 +1040,8 @@ cdef class Tox_Ptr: cdef Tox_Err_Group_Self_Query err = TOX_ERR_GROUP_SELF_QUERY_OK cdef size_t size = tox_public_key_size() cdef uint8_t *data = malloc(size * sizeof(uint8_t)) + if data is NULL: + raise MemoryError() try: tox_group_self_get_public_key(self._get(), group_number, data, &err) if err: @@ -1006,6 +1056,8 @@ cdef class Tox_Ptr: if err: raise ApiException(Tox_Err_Group_Peer_Query(err)) cdef uint8_t *data = malloc(size * sizeof(uint8_t)) + if data is NULL: + raise MemoryError() try: tox_group_peer_get_name(self._get(), group_number, peer_id, data, &err) if err: @@ -1045,6 +1097,8 @@ cdef class Tox_Ptr: cdef Tox_Err_Group_Peer_Query err = TOX_ERR_GROUP_PEER_QUERY_OK cdef size_t size = tox_public_key_size() cdef uint8_t *data = malloc(size * sizeof(uint8_t)) + if data is NULL: + raise MemoryError() try: tox_group_peer_get_public_key(self._get(), group_number, peer_id, data, &err) if err: @@ -1059,6 +1113,8 @@ cdef class Tox_Ptr: if err: raise ApiException(Tox_Err_Group_State_Query(err)) cdef uint8_t *data = malloc(size * sizeof(uint8_t)) + if data is NULL: + raise MemoryError() try: tox_group_get_topic(self._get(), group_number, data, &err) if err: @@ -1079,6 +1135,8 @@ cdef class Tox_Ptr: if err: raise ApiException(Tox_Err_Group_State_Query(err)) cdef uint8_t *data = malloc(size * sizeof(uint8_t)) + if data is NULL: + raise MemoryError() try: tox_group_get_name(self._get(), group_number, data, &err) if err: @@ -1091,6 +1149,8 @@ cdef class Tox_Ptr: cdef Tox_Err_Group_State_Query err = TOX_ERR_GROUP_STATE_QUERY_OK cdef size_t size = tox_group_chat_id_size() cdef uint8_t *data = malloc(size * sizeof(uint8_t)) + if data is NULL: + raise MemoryError() try: tox_group_get_chat_id(self._get(), group_number, data, &err) if err: @@ -1160,6 +1220,8 @@ cdef class Tox_Ptr: if err: raise ApiException(Tox_Err_Group_State_Query(err)) cdef uint8_t *data = malloc(size * sizeof(uint8_t)) + if data is NULL: + raise MemoryError() try: tox_group_get_password(self._get(), group_number, data, &err) if err: diff --git a/test/tox_options_test.py b/test/tox_options_test.py index 52ff573..89bc943 100644 --- a/test/tox_options_test.py +++ b/test/tox_options_test.py @@ -54,8 +54,8 @@ def test_options(self) -> None: opts.savedata_type = c.TOX_SAVEDATA_TYPE_TOX_SAVE self.assertEqual(opts.savedata_type, c.TOX_SAVEDATA_TYPE_TOX_SAVE) - opts.savedata_data = b"test" - self.assertEqual(opts.savedata_data, b"test") + opts.savedata = b"test" + self.assertEqual(opts.savedata, b"test") self.assertFalse(opts.experimental_thread_safety) opts.experimental_thread_safety = True diff --git a/tools/groupbot/api.py b/tools/groupbot/api.py index 06da070..d17ede0 100644 --- a/tools/groupbot/api.py +++ b/tools/groupbot/api.py @@ -71,7 +71,7 @@ def parse_args() -> Config: default=(os.path.join( BUILD_WORKSPACE_DIRECTORY, "tools", - "toktok-backup", + "backup", ) if BUILD_WORKSPACE_DIRECTORY is not None else None), ) return Config(**vars(parser.parse_args())) diff --git a/tools/groupbot/groupbot.py b/tools/groupbot/groupbot.py index d0e1909..f13318a 100644 --- a/tools/groupbot/groupbot.py +++ b/tools/groupbot/groupbot.py @@ -47,7 +47,7 @@ def __init__(self, config: api.Config) -> None: options.proxy_port = 9050 options.proxy_type = core.TOX_PROXY_TYPE_SOCKS5 if data: - options.savedata_data = data + options.savedata = data options.savedata_type = core.TOX_SAVEDATA_TYPE_TOX_SAVE super().__init__(config, options) diff --git a/tools/groupbot/groupbot.tox b/tools/groupbot/groupbot.tox index cce8014cc169a71feac6599d5bda3af7ec645e2c..856e32dec20d9c9d0d60b0b116c19c7cbb3f1ae8 100644 GIT binary patch literal 52979 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

dKjN&6KmjH zO*}_}{-oxnE+x21!1%Vd|0LrlE4Sn>A5NdBH2SXsWD#5yAw^j*0(zWcKzUtnx)sMZ z&qVv~@ydb$j*T9RV$0r^&GGEeCJP>RLl1Jj^1NO-umj20R!D-U;$23OCTsKPKU9o$TjDd&OJMYLIrV_i>gG?T>W>v1o#&Zi3wArG6unK=&a$7} zyiSA(UW8@SkGUFQfM`C6fuc|giKtLNRa1I)Oz0jdBr z7~_H5%ax4D+*j!nmE<{N5&zUH`POJx=aEAtyG4z3P>p5t5n-VOvd<4PhL zr4FH*aE|3y;ZliWCe?P_?l|aook8n9yI9Exf~fLlQGF$1?xW8JN;I1SU^epcONdTRUJ1hC%yC2Y;xW$=blxK%Z(9K>~SU0N2`*T~^#T^C@+s#2gJAvuCz`9aX+ zISW1aKjn-YZqrH0iZcpDgt%Bj)iQmA4|>4Hb-ONdEQ0l*7k z{fUMu@F+|%>OhAmmzT1H7>KX76=>sB&W}{=ZrDOni-{HVFrJFT@|_28_I}v00w$+X zTQ;KNWE~zNWxeVreWXl2QH^SO>d&4hEzK(Oo?}%ewzPLXx)qD#o;$p8-3?r3ubplp z@liD7YC>7}vR{Q`@=voHT_PU^rMKkthY1-3Y8bI6*N&{Qb9~&PMJxC2=0z{wUwBxN#FO-3Pn`+{$>NTo$!V7T8v)v)mzI%wTZB1;ohw@ zRJzF>J&|-ULq{l@ihxjMs*Lz#XRX7Olb;K(W(PX9Ns_#99iWkwm5*B2K@bN}Yr&+v z8O7emkF)WJ$C;f4@x@18QP|!Y?O6q1v)PzPPg0UZpk^QPYH3#qlTGM^)&=K^qln4? zDgq1(BOW^T%*y{BqHxWYb_b?^WLU(h81;(`gC+adQT4wK-iY@5okNzv*JvjE{Hdw2 zPQ2vG<<`lM<0a%odx!+-p;vMH6q8bjpaX#IckheTS#DEFR@&2p0#B=pkSpn8{4Hn8 z4q?Q-KZ;p93^l=+%}>HgJBIW@TtMwur6c7*P_4P&^}qqf^8&QaYD;)!c>N@uT5tIR zG5MmBlvNq85AQpL(EmbN_7NPQ6C6%v_!ZULvICtau+GYZvBYxd!G3c9d))YCN&~zv zr}T`!?7Uf|H2GjaAT1^dmcZ0Yks6v4j_B#U6JdDg}s-FaKe`HDSk|gh3q-bhBg;|nJL@8v6E%2jpczu{@d36>_3}eO5 zCYB(#d1(^e5N7edhBLBEWlHrLIgUvr7=x5t>iZ-2zfFNIvnVPO{W0k_pG6(n6PkEK z<(Po`A<=7uQlKjPGmkh`ZrD+BNYkeRja}wBfY)wUlb@yv} z(5af;9JiDUZUJ;$z_lA*OC&ZMhXgYp-ZX(#*th9yHKa;atba>k9%L@-$domOl zIs;+i?Bz5nHw*zinQmp~A1qjc=|}G#u)9cq-coPG^W@5x-B)HPella4r~LY>Czbmj zvYG^;mhN3OUp$`>nc3jqa1kl$KNaYA95~=ir>kG&Kx?aa zSBHV;EvZfvPyGRWjG7EMzz90MZ{y zsI21ahcfy>TNhpLuz$zGX0cN>9lMq7*oxh-W1-l)o(pVn12*LCrHAgI(30=DFFF(s z4m3KRU{%CTN&*$#A>6D}{z@re8=wQXrN<=JNw2Rzx1bO&e5zpi)WfcDEgF#>mz3|q zsK-@kTUaZ6oHu~18T)!@*6cGk(gmfMVtw9I!iP5>*9=`~Ud%V1G2%1d@zKwW-rQ76 zRCJq`^3*2@{VYRdO>LuX;~BHHh_W_zllP-~_!*ULHuN(_G^NWG+~a2*(|HcrBD!?p zy%<_PxuMiL^_$`ZyjR?4*baTHh@u+-?DHR020}r!qdP3U @9wQ&4&YD=VOq52bw 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 literal 40894 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 )d+D@!~xm2Swg1^+5^=W39 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 diff --git a/tools/groupbot/plugins/github.py b/tools/groupbot/plugins/github.py index 83e0aa5..df9083d 100644 --- a/tools/groupbot/plugins/github.py +++ b/tools/groupbot/plugins/github.py @@ -8,6 +8,8 @@ """ import json import os +import subprocess # nosec +import time from dataclasses import dataclass from functools import cache as memoize from typing import Any @@ -105,6 +107,7 @@ def fromJSON(path: IssuePath, issue: dict[str, Any]) -> "Issue": @dataclass class GitHub(api.Handler): path: str + last_update: float = 0 @staticmethod def new(config: api.Config) -> "GitHub": @@ -147,6 +150,8 @@ def handle_cli(self, message: tuple[str, ...]) -> Optional[api.Reply]: if len(message) == 1 and "#" in message[0]: repo_name, issue_id = message[0].split("#", 1) return self.handle_issue(repo_name, issue_id) + if len(message) == 1 and message[0] == "update": + return self.handle_update() return None @@ -200,6 +205,25 @@ def handle_issue(self, repo_name: Optional[str], return api.Reply(f"{issue.emoji} {issue.title} by {issue.user.login} " f"({issue.repo}#{issue.number}, {issue.state})") + def handle_update(self) -> api.Reply: + """Pull the backup directory.""" + if time.time() - self.last_update < 60: + return api.Reply("Not updating yet, try again later") + self.last_update = time.time() + output = subprocess.run( # nosec + ["git", "pull", "--rebase"], + cwd=self.path, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + ).stdout.decode().split("\n")[0] + self._clear_cache() + return api.Reply(output) + + def _clear_cache(self) -> None: + """Clear the memoization cache.""" + for func in (self.load_issue, self.issues, self.repos): + func.cache_clear() + @memoize def load_issue(self, issue: IssuePath) -> Issue: """Get the issue/PR information.""" @@ -220,22 +244,24 @@ def issues(self, repo: RepoPath) -> list[IssuePath]: issues: list[IssuePath] = [] issues_path = os.path.join(repo.path, "issues") - issues.extend( - IssuePath( - os.path.join(issues_path, issue), - repo, - int(issue.removesuffix(".json")), - is_pull_request=False, - ) for issue in os.listdir(issues_path)) + if os.path.exists(issues_path): + issues.extend( + IssuePath( + os.path.join(issues_path, issue), + repo, + int(issue.removesuffix(".json")), + is_pull_request=False, + ) for issue in os.listdir(issues_path)) pulls_path = os.path.join(repo.path, "pulls") - issues.extend( - IssuePath( - os.path.join(pulls_path, issue), - repo, - int(issue.removesuffix(".json")), - is_pull_request=True, - ) for issue in os.listdir(pulls_path)) + if os.path.exists(pulls_path): + issues.extend( + IssuePath( + os.path.join(pulls_path, issue), + repo, + int(issue.removesuffix(".json")), + is_pull_request=True, + ) for issue in os.listdir(pulls_path)) return sorted(issues) @@ -247,8 +273,7 @@ def issues(self, repo: RepoPath) -> list[IssuePath]: api.BUILD_WORKSPACE_DIRECTORY = os.path.abspath( os.path.dirname( os.path.dirname(os.path.dirname(os.path.dirname(__file__))))) - github_path = os.path.join(api.BUILD_WORKSPACE_DIRECTORY, "tools", - "toktok-backup") + github_path = os.path.join(api.BUILD_WORKSPACE_DIRECTORY, "tools", "backup") gh = GitHub(github_path) reply = gh.handle_cli(tuple(sys.argv[1:]))