mirror of
https://github.com/Cog-Creators/Red-DiscordBot.git
synced 2025-11-08 20:28:55 -05:00
[Downloader] [p]cog repo add error handling, invalid repos cleanup
This commit is contained in:
parent
84ce5c3a8b
commit
9fa2776bda
@ -23,6 +23,10 @@ class UpdateError(Exception):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class CloningError(UpdateError):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
class Downloader:
|
class Downloader:
|
||||||
"""Cog downloader/installer."""
|
"""Cog downloader/installer."""
|
||||||
|
|
||||||
@ -79,7 +83,13 @@ class Downloader:
|
|||||||
return
|
return
|
||||||
self.repos[repo_name] = {}
|
self.repos[repo_name] = {}
|
||||||
self.repos[repo_name]['url'] = repo_url
|
self.repos[repo_name]['url'] = repo_url
|
||||||
|
try:
|
||||||
self.update_repo(repo_name)
|
self.update_repo(repo_name)
|
||||||
|
except CloningError:
|
||||||
|
await self.bot.say("That repository link doesn't seem to be "
|
||||||
|
"valid.")
|
||||||
|
del self.repos[repo_name]
|
||||||
|
return
|
||||||
self.populate_list(repo_name)
|
self.populate_list(repo_name)
|
||||||
self.save_repos()
|
self.save_repos()
|
||||||
data = self.get_info_data(repo_name)
|
data = self.get_info_data(repo_name)
|
||||||
@ -431,13 +441,26 @@ class Downloader:
|
|||||||
return git_name[:-4]
|
return git_name[:-4]
|
||||||
|
|
||||||
def _do_first_run(self):
|
def _do_first_run(self):
|
||||||
|
invalid = []
|
||||||
save = False
|
save = False
|
||||||
|
|
||||||
for repo in self.repos:
|
for repo in self.repos:
|
||||||
broken = 'url' in self.repos[repo] and len(self.repos[repo]) == 1
|
broken = 'url' in self.repos[repo] and len(self.repos[repo]) == 1
|
||||||
if broken:
|
if broken:
|
||||||
|
save = True
|
||||||
|
try:
|
||||||
self.update_repo(repo)
|
self.update_repo(repo)
|
||||||
self.populate_list(repo)
|
self.populate_list(repo)
|
||||||
save = True
|
except CloningError:
|
||||||
|
invalid.append(repo)
|
||||||
|
continue
|
||||||
|
except Exception as e:
|
||||||
|
print(e) # TODO: Proper logging
|
||||||
|
continue
|
||||||
|
|
||||||
|
for repo in invalid:
|
||||||
|
del self.repos[repo]
|
||||||
|
|
||||||
if save:
|
if save:
|
||||||
self.save_repos()
|
self.save_repos()
|
||||||
|
|
||||||
@ -469,7 +492,7 @@ class Downloader:
|
|||||||
raise UpdateError("Need to clone but no URL set")
|
raise UpdateError("Need to clone but no URL set")
|
||||||
p = run(["git", "clone", url, dd + name])
|
p = run(["git", "clone", url, dd + name])
|
||||||
if p.returncode != 0:
|
if p.returncode != 0:
|
||||||
raise UpdateError("Error cloning")
|
raise CloningError()
|
||||||
self.populate_list(name)
|
self.populate_list(name)
|
||||||
return name, REPO_CLONE, None
|
return name, REPO_CLONE, None
|
||||||
else:
|
else:
|
||||||
@ -510,6 +533,8 @@ class Downloader:
|
|||||||
ret[status] = []
|
ret[status] = []
|
||||||
ret[status].append(cogname)
|
ret[status].append(cogname)
|
||||||
return name, ret, oldhash
|
return name, ret, oldhash
|
||||||
|
except CloningError as e:
|
||||||
|
raise CloningError(name, *e.args) from None
|
||||||
except UpdateError as e:
|
except UpdateError as e:
|
||||||
raise UpdateError(name, *e.args) from None
|
raise UpdateError(name, *e.args) from None
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user