Skip to content

Commit d0368aa

Browse files
committed
Remove RepositoryNameTransformer and rename FullRepositoryTransformer to RepositoryTransformer
1 parent 7526f10 commit d0368aa

File tree

4 files changed

+40
-38
lines changed

4 files changed

+40
-38
lines changed

bot/src/ghutils/cogs/app_commands/config/admin.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77

88
from ghutils.core.cog import GHUtilsCog, SubGroup
99
from ghutils.db.config import get_guild_config
10-
from ghutils.utils.discord.transformers import RepositoryNameOption
10+
from ghutils.utils.discord.transformers import RepositoryOption
11+
from ghutils.utils.github import RepositoryName
1112

1213
type ServerConfigOption = Literal[
1314
"default_repo",
@@ -77,12 +78,13 @@ class Set(SubGroup):
7778
async def default_repo(
7879
self,
7980
interaction: Interaction,
80-
value: RepositoryNameOption,
81+
value: RepositoryOption,
8182
):
83+
new_value = RepositoryName.parse(value.full_name)
8284
with self._update_config(interaction) as config:
8385
old_value = config.default_repo
84-
config.default_repo = value
85-
await _send_updated(interaction, "default_repo", old_value, value)
86+
config.default_repo = new_value
87+
await _send_updated(interaction, "default_repo", old_value, new_value)
8688

8789
@contextmanager
8890
def _update_config(self, interaction: Interaction):

bot/src/ghutils/cogs/app_commands/config/user.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@
88

99
from ghutils.core.cog import GHUtilsCog, SubGroup
1010
from ghutils.db.config import get_user_config, get_user_guild_config
11-
from ghutils.utils.discord.transformers import RepositoryNameOption
11+
from ghutils.utils.discord.transformers import RepositoryOption
12+
from ghutils.utils.github import RepositoryName
1213

1314
type UserConfigOption = Literal[
1415
"default_repo",
@@ -90,12 +91,13 @@ class Set(SubGroup):
9091
async def default_repo(
9192
self,
9293
interaction: Interaction,
93-
value: RepositoryNameOption,
94+
value: RepositoryOption,
9495
):
96+
new_value = RepositoryName.parse(value.full_name)
9597
with self._update_config(interaction) as config:
9698
old_value = config.default_repo
97-
config.default_repo = value
98-
await _send_updated(interaction, "default_repo", old_value, value)
99+
config.default_repo = new_value
100+
await _send_updated(interaction, "default_repo", old_value, new_value)
99101

100102
@contextmanager
101103
def _update_config(self, interaction: Interaction):

bot/src/ghutils/cogs/app_commands/github.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
IssueReference,
3333
PRReference,
3434
)
35-
from ghutils.utils.discord.transformers import FullRepositoryOption, UserOption
35+
from ghutils.utils.discord.transformers import RepositoryOption, UserOption
3636
from ghutils.utils.discord.visibility import MessageVisibility, respond_with_visibility
3737
from ghutils.utils.github import (
3838
CommitCheckState,
@@ -126,7 +126,7 @@ async def commit(
126126
async def repo(
127127
self,
128128
interaction: Interaction,
129-
repo: FullRepositoryOption,
129+
repo: RepositoryOption,
130130
visibility: MessageVisibility = "private",
131131
):
132132
async with self.bot.github_app(interaction) as (github, _):
@@ -307,7 +307,7 @@ class Search(SubGroup):
307307
async def files(
308308
self,
309309
interaction: Interaction,
310-
repo: FullRepositoryOption,
310+
repo: RepositoryOption,
311311
query: Range[str, 1, 128],
312312
ref: Range[str, 1, 255] | None = None,
313313
exact: bool = False,

bot/src/ghutils/utils/discord/transformers.py

Lines changed: 25 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
from __future__ import annotations
22

33
import logging
4-
from typing import Any
54

65
from discord import Interaction
76
from discord.app_commands import Transform, Transformer
@@ -19,9 +18,21 @@
1918
logger = logging.getLogger(__name__)
2019

2120

22-
class RepositoryNameTransformer(Transformer):
23-
async def transform(self, interaction: Interaction, value: str) -> Any:
24-
return RepositoryName.parse(value)
21+
class RepositoryTransformer(Transformer):
22+
async def transform(self, interaction: Interaction, value: str) -> FullRepository:
23+
repo = RepositoryName.parse(value)
24+
async with GHUtilsBot.github_app_of(interaction) as (github, _):
25+
try:
26+
return await gh_request(
27+
github.rest.repos.async_get(repo.owner, repo.repo)
28+
)
29+
except GitHubException as e:
30+
match e:
31+
case RequestFailed(response=Response(status_code=404)):
32+
raise ValueError("Repository not found")
33+
case _:
34+
logger.warning(e)
35+
raise ValueError(f"Failed to get repository: {e}")
2536

2637
async def autocomplete( # pyright: ignore[reportIncompatibleMethodOverride]
2738
self,
@@ -64,25 +75,12 @@ async def autocomplete( # pyright: ignore[reportIncompatibleMethodOverride]
6475
]
6576

6677

67-
class FullRepositoryTransformer(RepositoryNameTransformer):
68-
async def transform(self, interaction: Interaction, value: str):
69-
repo = RepositoryName.parse(value)
70-
async with GHUtilsBot.github_app_of(interaction) as (github, _):
71-
try:
72-
return await gh_request(
73-
github.rest.repos.async_get(repo.owner, repo.repo)
74-
)
75-
except GitHubException as e:
76-
match e:
77-
case RequestFailed(response=Response(status_code=404)):
78-
raise ValueError("Repository not found")
79-
case _:
80-
logger.warning(e)
81-
raise ValueError(f"Failed to get repository: {e}")
82-
83-
8478
class UserTransformer(Transformer):
85-
async def transform(self, interaction: Interaction, value: str):
79+
async def transform(
80+
self,
81+
interaction: Interaction,
82+
value: str,
83+
) -> PrivateUser | PublicUser:
8684
async with GHUtilsBot.github_app_of(interaction) as (github, _):
8785
try:
8886
return await gh_request(github.rest.users.async_get_by_username(value))
@@ -95,7 +93,9 @@ async def transform(self, interaction: Interaction, value: str):
9593
raise ValueError(f"Failed to get user: {e}")
9694

9795
async def autocomplete( # pyright: ignore[reportIncompatibleMethodOverride]
98-
self, interaction: Interaction, value: str
96+
self,
97+
interaction: Interaction,
98+
value: str,
9999
) -> list[Choice[str]]:
100100
async with GHUtilsBot.github_app_of(interaction) as (github, state):
101101
if state != LoginState.LOGGED_IN:
@@ -122,8 +122,6 @@ async def autocomplete( # pyright: ignore[reportIncompatibleMethodOverride]
122122
return [Choice(name=user.login, value=user.login) for user in result.items]
123123

124124

125-
UserOption = Transform[PrivateUser | PublicUser, UserTransformer]
126-
127-
RepositoryNameOption = Transform[RepositoryName, RepositoryNameTransformer]
125+
RepositoryOption = Transform[FullRepository, RepositoryTransformer]
128126

129-
FullRepositoryOption = Transform[FullRepository, FullRepositoryTransformer]
127+
UserOption = Transform[PrivateUser | PublicUser, UserTransformer]

0 commit comments

Comments
 (0)