From abc9927dea2efe382262966af8f07255fb6ff1ae Mon Sep 17 00:00:00 2001 From: SeaswimmerTheFsh Date: Wed, 31 Jan 2024 12:12:38 -0500 Subject: [PATCH] feat(backup): added the cog --- backup/__init__.py | 5 +++++ backup/backup.py | 43 +++++++++++++++++++++++++++++++++++++++++++ backup/info.json | 13 +++++++++++++ 3 files changed, 61 insertions(+) create mode 100644 backup/__init__.py create mode 100644 backup/backup.py create mode 100644 backup/info.json diff --git a/backup/__init__.py b/backup/__init__.py new file mode 100644 index 0000000..2d8a158 --- /dev/null +++ b/backup/__init__.py @@ -0,0 +1,5 @@ +from .backup import Backup + + +async def setup(bot): + await bot.add_cog(Backup(bot)) diff --git a/backup/backup.py b/backup/backup.py new file mode 100644 index 0000000..e907d20 --- /dev/null +++ b/backup/backup.py @@ -0,0 +1,43 @@ +# _____ _ +# / ____| (_) +# | (___ ___ __ _ _____ ___ _ __ ___ _ __ ___ ___ _ __ +# \___ \ / _ \/ _` / __\ \ /\ / / | '_ ` _ \| '_ ` _ \ / _ \ '__| +# ____) | __/ (_| \__ \\ V V /| | | | | | | | | | | | __/ | +# |_____/ \___|\__,_|___/ \_/\_/ |_|_| |_| |_|_| |_| |_|\___|_| + +import json +import itertools + +from redbot.core import commands +from redbot.core.bot import Red + +class Backup(commands.Cog): + """A utility to make reinstalling repositories and cogs after migrating the bot far easier.""" + + __author__ = "SeaswimmerTheFsh" + __version__ = "1.0.0" + + def __init__(self, bot: Red): + super().__init__() + self.bot = bot + + @commands.group(autohelp=True) + @commands.is_owner() + async def backup(self, ctx: commands.Context): + """Backup your installed cogs.""" + + @backup.command(name='export') + @commands.is_owner() + async def backup_export(self, ctx: commands.Context): + """Export your installed repositories and cogs to a file.""" + downloader = ctx.bot.get_cog("Downloader") + if downloader is None: + await ctx.send(f"You do not have the `Downloader` cog loaded.\nPlease run `{ctx.prefix}load downloader` and try again.") + return + all_repos = list(downloader._repo_manager.repos) + repos_list = [[f"{i.name}", i.url] for i in all_repos] + cogs = await downloader.installed_cogs() + for cog, r in itertools.product(cogs, repos_list): + if cog.repo_name == list(r)[0]: + r.append(cog.name) + await ctx.send(json.dumps(repos_list, indent=4)) diff --git a/backup/info.json b/backup/info.json new file mode 100644 index 0000000..fa07072 --- /dev/null +++ b/backup/info.json @@ -0,0 +1,13 @@ +{ + "author" : ["SeaswimmerTheFsh"], + "install_msg" : "Thank you for installing Backup!\nYou can find the source code of this cog [here](https://coastalcommits.com/SeaswimmerTheFsh/SeaCogs).", + "name" : "Backup", + "short" : "A utility to make reinstalling repositories and cogs after migrating the bot far easier.", + "description" : "A utility to make reinstalling repositories and cogs after migrating the bot far easier.", + "end_user_data_statement" : "This cog does not store user information.", + "hidden": false, + "disabled": false, + "min_bot_version": "3.5.0", + "min_python_version": [3, 10, 0], + "tags": [] +}