mirror of
https://github.com/Cog-Creators/Red-DiscordBot.git
synced 2025-11-06 11:18:54 -05:00
[Downloader] Catch OSErrors from invalid repo names (#3029)
* [Downloader] Ensure repo names only contain the characters stated * Create 2827.bugfix.rst * [Downloader] Catch OSErrors from invalid filenames * Update 2827.bugfix.rst * Style * do the thing again * Update 2827.bugfix.rst
This commit is contained in:
parent
ea77de5d56
commit
9b60816ebd
1
changelog.d/downloader/2827.bugfix.rst
Normal file
1
changelog.d/downloader/2827.bugfix.rst
Normal file
@ -0,0 +1 @@
|
|||||||
|
Repo names can now only contain the characters listed in the help text (A-Z, 0-9, underscores, and hyphens).
|
||||||
@ -1,6 +1,7 @@
|
|||||||
import asyncio
|
import asyncio
|
||||||
import contextlib
|
import contextlib
|
||||||
import os
|
import os
|
||||||
|
import re
|
||||||
import shutil
|
import shutil
|
||||||
import sys
|
import sys
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
@ -222,12 +223,17 @@ class Downloader(commands.Cog):
|
|||||||
async def _repo_add(self, ctx, name: str, repo_url: str, branch: str = None):
|
async def _repo_add(self, ctx, name: str, repo_url: str, branch: str = None):
|
||||||
"""Add a new repo.
|
"""Add a new repo.
|
||||||
|
|
||||||
The name can only contain characters A-z, numbers and underscores.
|
Repo names can only contain characters A-z, numbers, underscores, and hyphens.
|
||||||
The branch will be the default branch if not specified.
|
The branch will be the default branch if not specified.
|
||||||
"""
|
"""
|
||||||
agreed = await do_install_agreement(ctx)
|
agreed = await do_install_agreement(ctx)
|
||||||
if not agreed:
|
if not agreed:
|
||||||
return
|
return
|
||||||
|
if re.match("^[a-zA-Z0-9_\-]*$", name) is None:
|
||||||
|
await ctx.send(
|
||||||
|
_("Repo names can only contain characters A-z, numbers, underscores, and hyphens.")
|
||||||
|
)
|
||||||
|
return
|
||||||
try:
|
try:
|
||||||
# noinspection PyTypeChecker
|
# noinspection PyTypeChecker
|
||||||
repo = await self._repo_manager.add_repo(name=name, url=repo_url, branch=branch)
|
repo = await self._repo_manager.add_repo(name=name, url=repo_url, branch=branch)
|
||||||
@ -241,6 +247,12 @@ class Downloader(commands.Cog):
|
|||||||
branch,
|
branch,
|
||||||
exc_info=err,
|
exc_info=err,
|
||||||
)
|
)
|
||||||
|
except OSError:
|
||||||
|
await ctx.send(
|
||||||
|
_(
|
||||||
|
"Something went wrong trying to add that repo. Your repo name might have an invalid character."
|
||||||
|
)
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
await ctx.send(_("Repo `{name}` successfully added.").format(name=name))
|
await ctx.send(_("Repo `{name}` successfully added.").format(name=name))
|
||||||
if repo.install_msg is not None:
|
if repo.install_msg is not None:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user