forked from cswimr/SeaCogs
Update backup/backup.py
This commit is contained in:
parent
863bed33f5
commit
0e2e8e4216
1 changed files with 1 additions and 48 deletions
|
@ -1,10 +1,3 @@
|
||||||
# _____ _
|
|
||||||
# / ____| (_)
|
|
||||||
# | (___ ___ __ _ _____ ___ _ __ ___ _ __ ___ ___ _ __
|
|
||||||
# \___ \ / _ \/ _` / __\ \ /\ / / | '_ ` _ \| '_ ` _ \ / _ \ '__|
|
|
||||||
# ____) | __/ (_| \__ \\ V V /| | | | | | | | | | | | __/ |
|
|
||||||
# |_____/ \___|\__,_|___/ \_/\_/ |_|_| |_| |_|_| |_| |_|\___|_|
|
|
||||||
|
|
||||||
import contextlib
|
import contextlib
|
||||||
import json
|
import json
|
||||||
import re
|
import re
|
||||||
|
@ -16,8 +9,6 @@ from redbot.core import commands
|
||||||
from redbot.core.bot import Red
|
from redbot.core.bot import Red
|
||||||
from redbot.core.utils.chat_formatting import error, humanize_list, text_to_file
|
from redbot.core.utils.chat_formatting import error, humanize_list, text_to_file
|
||||||
|
|
||||||
|
|
||||||
# pylint: disable=protected-access
|
|
||||||
class Backup(commands.Cog):
|
class Backup(commands.Cog):
|
||||||
"""A utility to make reinstalling repositories and cogs after migrating the bot far easier."""
|
"""A utility to make reinstalling repositories and cogs after migrating the bot far easier."""
|
||||||
|
|
||||||
|
@ -77,9 +68,6 @@ class Backup(commands.Cog):
|
||||||
if cog.repo_name == repo.name:
|
if cog.repo_name == repo.name:
|
||||||
cog_dict = {
|
cog_dict = {
|
||||||
"name": cog.name,
|
"name": cog.name,
|
||||||
# "loaded": cog.name in ctx.bot.extensions.keys(),
|
|
||||||
# this functionality was planned but never implemented due to Red limitations
|
|
||||||
# and the possibility of restoration functionality being added to Core
|
|
||||||
"pinned": cog.pinned,
|
"pinned": cog.pinned,
|
||||||
"commit": cog.commit,
|
"commit": cog.commit,
|
||||||
}
|
}
|
||||||
|
@ -104,39 +92,4 @@ class Backup(commands.Cog):
|
||||||
elif ctx.message.reference and hasattr(ctx.message.reference, 'resolved'):
|
elif ctx.message.reference and hasattr(ctx.message.reference, 'resolved'):
|
||||||
if ctx.message.reference.resolved.attachments:
|
if ctx.message.reference.resolved.attachments:
|
||||||
try:
|
try:
|
||||||
export = json.loads(await ctx.message.reference.resolved.attachments[0].read())
|
export
|
||||||
except json.JSONDecodeError:
|
|
||||||
await ctx.send(error("Invalid JSON in referenced message attachments."))
|
|
||||||
if export is None:
|
|
||||||
await ctx.send(error("Please provide a valid JSON export file."))
|
|
||||||
return
|
|
||||||
|
|
||||||
downloader = ctx.bot.get_cog("Downloader")
|
|
||||||
if downloader is None:
|
|
||||||
await ctx.send(
|
|
||||||
error(
|
|
||||||
f"You do not have the `Downloader` cog loaded. Please run `{ctx.prefix}load downloader` and try again."
|
|
||||||
)
|
|
||||||
)
|
|
||||||
return
|
|
||||||
|
|
||||||
all_repos = list(downloader._repo_manager.repos)
|
|
||||||
|
|
||||||
for repo in export:
|
|
||||||
if repo["name"] not in [r.name for r in all_repos]:
|
|
||||||
try:
|
|
||||||
await downloader._repo_manager.add_repo(
|
|
||||||
repo["url"], repo["name"], repo["branch"]
|
|
||||||
)
|
|
||||||
except errors.ExistingGitRepo:
|
|
||||||
pass
|
|
||||||
|
|
||||||
for cog in repo["cogs"]:
|
|
||||||
try:
|
|
||||||
await downloader._cog_install_interface.install_cog(
|
|
||||||
cog["name"], cog["commit"]
|
|
||||||
)
|
|
||||||
except errors.CogNotFoundError:
|
|
||||||
pass
|
|
||||||
except errors.DownloaderError:
|
|
||||||
pass
|
|
||||||
|
|
Loading…
Reference in a new issue