mirror of
https://github.com/Cog-Creators/Red-DiscordBot.git
synced 2025-11-07 03:38:53 -05:00
[Core] Add --unload-cogs cli flag. (#5802)
* [Core] Add `--unload-cogs` cli. * Fixed error + Reformat. * At @Jack1142's request, the `packages` local variable is no longer a list, but a dictionary with `None` values, to avoid duplication. * Update redbot/core/bot.py Co-authored-by: Jakub Kuczys <6032823+jack1142@users.noreply.github.com> * Update redbot/core/bot.py Co-authored-by: Jakub Kuczys <6032823+jack1142@users.noreply.github.com> * Update bot.py * Update bot.py Co-authored-by: Jakub Kuczys <6032823+jack1142@users.noreply.github.com>
This commit is contained in:
parent
7429b4ff89
commit
6ced7ba945
@ -8,7 +8,7 @@ import sys
|
||||
import contextlib
|
||||
import weakref
|
||||
import functools
|
||||
from collections import namedtuple
|
||||
from collections import namedtuple, OrderedDict
|
||||
from datetime import datetime
|
||||
from enum import IntEnum
|
||||
from importlib.machinery import ModuleSpec
|
||||
@ -1109,7 +1109,7 @@ class Red(
|
||||
await modlog._init(self)
|
||||
await bank._init()
|
||||
|
||||
packages = []
|
||||
packages = OrderedDict()
|
||||
|
||||
last_system_info = await self._config.last_system_info()
|
||||
|
||||
@ -1135,10 +1135,13 @@ class Red(
|
||||
python_version_changed = True
|
||||
else:
|
||||
if self._cli_flags.no_cogs is False:
|
||||
packages.extend(await self._config.packages())
|
||||
packages.update(dict.fromkeys(await self._config.packages()))
|
||||
|
||||
if self._cli_flags.load_cogs:
|
||||
packages.extend(self._cli_flags.load_cogs)
|
||||
packages.update(dict.fromkeys(self._cli_flags.load_cogs))
|
||||
if self._cli_flags.unload_cogs:
|
||||
for package in self._cli_flags.unload_cogs:
|
||||
packages.pop(package, None)
|
||||
|
||||
system_changed = False
|
||||
machine = platform.machine()
|
||||
@ -1169,11 +1172,9 @@ class Red(
|
||||
if packages:
|
||||
# Load permissions first, for security reasons
|
||||
try:
|
||||
packages.remove("permissions")
|
||||
except ValueError:
|
||||
packages.move_to_end("permissions", last=False)
|
||||
except KeyError:
|
||||
pass
|
||||
else:
|
||||
packages.insert(0, "permissions")
|
||||
|
||||
to_remove = []
|
||||
log.info("Loading packages...")
|
||||
@ -1197,9 +1198,11 @@ class Red(
|
||||
await self.remove_loaded_package(package)
|
||||
to_remove.append(package)
|
||||
for package in to_remove:
|
||||
packages.remove(package)
|
||||
if packages:
|
||||
log.info("Loaded packages: " + ", ".join(packages))
|
||||
del packages[package]
|
||||
if packages:
|
||||
log.info("Loaded packages: " + ", ".join(packages))
|
||||
else:
|
||||
log.info("No packages were loaded.")
|
||||
|
||||
if self.rpc_enabled:
|
||||
await self.rpc.initialize(self.rpc_port)
|
||||
|
||||
@ -185,6 +185,9 @@ def parse_cli_flags(args):
|
||||
help="Force loading specified cogs from the installed packages. "
|
||||
"Can be used with the --no-cogs flag to load these cogs exclusively.",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--unload-cogs", type=str, nargs="+", help="Force unloading specified cogs."
|
||||
)
|
||||
parser.add_argument(
|
||||
"--dry-run",
|
||||
action="store_true",
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user