From b041d59fc713742acf7f1c9559cdb404eaaa6c2e Mon Sep 17 00:00:00 2001 From: Will Date: Fri, 8 Jun 2018 20:39:07 -0400 Subject: [PATCH] [V3 Downloader] Make hidden hidden and add disabled (#1828) * Make hidden hidden and add disabled * Add documentation --- docs/framework_downloader.rst | 4 +++- redbot/cogs/downloader/downloader.py | 6 +++++- redbot/cogs/downloader/installable.py | 7 +++++++ redbot/cogs/downloader/repo_manager.py | 2 +- 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/docs/framework_downloader.rst b/docs/framework_downloader.rst index b490f4940..fcca8619f 100644 --- a/docs/framework_downloader.rst +++ b/docs/framework_downloader.rst @@ -29,7 +29,9 @@ Keys specific to the cog info.json (case sensitive) - ``bot_version`` (list of integer) - Min version number of Red in the format ``(MAJOR, MINOR, PATCH)`` -- ``hidden`` (bool) - Determines if a cog is available for install. +- ``hidden`` (bool) - Determines if a cog is visible in the cog list for a repo. + +- ``disabled`` (bool) - Determines if a cog is available for install. - ``required_cogs`` (map of cogname to repo URL) - A map of required cogs that this cog depends on. Downloader will not deal with this functionality but it may be useful for other cogs. diff --git a/redbot/cogs/downloader/downloader.py b/redbot/cogs/downloader/downloader.py index 302a09939..2c3f95e05 100644 --- a/redbot/cogs/downloader/downloader.py +++ b/redbot/cogs/downloader/downloader.py @@ -394,7 +394,11 @@ class Downloader: ) cogs = repo_name.available_cogs cogs = _("Available Cogs:\n") + "\n".join( - ["+ {}: {}".format(c.name, c.short or "") for c in cogs if c not in installed] + [ + "+ {}: {}".format(c.name, c.short or "") + for c in cogs + if not (c.hidden or c in installed) + ] ) cogs = cogs + "\n\n" + installed_str for page in pagify(cogs, ["\n"], shorten_by=16): diff --git a/redbot/cogs/downloader/installable.py b/redbot/cogs/downloader/installable.py index d30cda5b7..a06e069ca 100644 --- a/redbot/cogs/downloader/installable.py +++ b/redbot/cogs/downloader/installable.py @@ -75,6 +75,7 @@ class Installable(RepoJSONMixin): self.bot_version = (3, 0, 0) self.min_python_version = (3, 5, 1) self.hidden = False + self.disabled = False self.required_cogs = {} # Cog name -> repo URL self.requirements = () self.tags = () @@ -173,6 +174,12 @@ class Installable(RepoJSONMixin): hidden = False self.hidden = hidden + try: + disabled = bool(info.get("disabled", False)) + except ValueError: + disabled = False + self.disabled = disabled + self.required_cogs = info.get("required_cogs", {}) self.requirements = info.get("requirements", ()) diff --git a/redbot/cogs/downloader/repo_manager.py b/redbot/cogs/downloader/repo_manager.py index 35c8b20e6..3d9ab7c3a 100644 --- a/redbot/cogs/downloader/repo_manager.py +++ b/redbot/cogs/downloader/repo_manager.py @@ -470,7 +470,7 @@ class Repo(RepoJSONMixin): """ # noinspection PyTypeChecker return tuple( - [m for m in self.available_modules if m.type == InstallableType.COG and not m.hidden] + [m for m in self.available_modules if m.type == InstallableType.COG and not m.disabled] ) @property