mirror of
https://github.com/Cog-Creators/Red-DiscordBot.git
synced 2025-11-20 18:06:08 -05:00
[Downloader] Install SHARED_LIBRARY requirements (#2384)
SHARED_LIBRARY Installable types did not have the requirements as defined in info.json automatically installed. This change updates the installation of libraries to also install their requirements. Resolves #2381
This commit is contained in:
@@ -140,7 +140,9 @@ class Downloader(commands.Cog):
|
||||
failed = []
|
||||
|
||||
for repo in repos:
|
||||
if not await repo.install_libraries(target_dir=self.SHAREDLIB_PATH):
|
||||
if not await repo.install_libraries(
|
||||
target_dir=self.SHAREDLIB_PATH, req_target_dir=self.LIB_PATH
|
||||
):
|
||||
failed.extend(repo.available_libraries)
|
||||
|
||||
# noinspection PyTypeChecker
|
||||
@@ -314,7 +316,7 @@ class Downloader(commands.Cog):
|
||||
|
||||
await self._add_to_installed(cog)
|
||||
|
||||
await repo.install_libraries(self.SHAREDLIB_PATH)
|
||||
await repo.install_libraries(target_dir=self.SHAREDLIB_PATH, req_target_dir=self.LIB_PATH)
|
||||
|
||||
await ctx.send(_("Cog `{cog_name}` successfully installed.").format(cog_name=cog_name))
|
||||
if cog.install_msg is not None:
|
||||
|
||||
@@ -404,7 +404,7 @@ class Repo(RepoJSONMixin):
|
||||
return await cog.copy_to(target_dir=target_dir)
|
||||
|
||||
async def install_libraries(
|
||||
self, target_dir: Path, libraries: Tuple[Installable] = ()
|
||||
self, target_dir: Path, req_target_dir: Path, libraries: Tuple[Installable] = ()
|
||||
) -> bool:
|
||||
"""Install shared libraries to the target directory.
|
||||
|
||||
@@ -415,6 +415,8 @@ class Repo(RepoJSONMixin):
|
||||
----------
|
||||
target_dir : pathlib.Path
|
||||
Directory to install shared libraries to.
|
||||
req_target_dir : pathlib.Path
|
||||
Directory to install shared library requirements to.
|
||||
libraries : `tuple` of `Installable`
|
||||
A subset of available libraries.
|
||||
|
||||
@@ -433,7 +435,11 @@ class Repo(RepoJSONMixin):
|
||||
if len(libraries) > 0:
|
||||
ret = True
|
||||
for lib in libraries:
|
||||
ret = ret and await lib.copy_to(target_dir=target_dir)
|
||||
ret = (
|
||||
ret
|
||||
and await self.install_requirements(cog=lib, target_dir=req_target_dir)
|
||||
and await lib.copy_to(target_dir=target_dir)
|
||||
)
|
||||
return ret
|
||||
return True
|
||||
|
||||
|
||||
Reference in New Issue
Block a user