Update backup/backup.py

This commit is contained in:
maxigames 2024-04-24 20:59:57 +00:00
parent 863bed33f5
commit 0e2e8e4216

View file

@ -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