diff --git a/platformio/package/manager/_install.py b/platformio/package/manager/_install.py index 003c2386..1bafcf8c 100644 --- a/platformio/package/manager/_install.py +++ b/platformio/package/manager/_install.py @@ -21,7 +21,7 @@ import click from platformio import app, compat, fs, util from platformio.package.exception import PackageException -from platformio.package.meta import PackageItem, PackageSpec +from platformio.package.meta import PackageItem from platformio.package.unpack import FileUnpacker from platformio.package.vcsclient import VCSClientFactory @@ -119,30 +119,7 @@ class PackageManagerInstallMixin(object): return pkg def install_dependencies(self, pkg, silent=False): - assert isinstance(pkg, PackageItem) - manifest = self.load_manifest(pkg) - if not manifest.get("dependencies"): - return - if not silent: - self.print_message("Installing dependencies...") - for dependency in manifest.get("dependencies"): - if not self._install_dependency(dependency, silent) and not silent: - self.print_message( - "Warning! Could not install dependency %s for package '%s'" - % (dependency, pkg.metadata.name), - fg="yellow", - ) - - def _install_dependency(self, dependency, silent=False): - spec = PackageSpec( - name=dependency.get("name"), requirements=dependency.get("version") - ) - search_filters = { - key: value - for key, value in dependency.items() - if key in ("authors", "platforms", "frameworks") - } - return self._install(spec, search_filters=search_filters or None, silent=silent) + pass def install_from_url(self, url, spec, checksum=None, silent=False): spec = self.ensure_spec(spec) diff --git a/platformio/package/manager/_uninstall.py b/platformio/package/manager/_uninstall.py index 2cca8505..322eced6 100644 --- a/platformio/package/manager/_uninstall.py +++ b/platformio/package/manager/_uninstall.py @@ -19,7 +19,7 @@ import click from platformio import fs from platformio.package.exception import UnknownPackageError -from platformio.package.meta import PackageItem, PackageSpec +from platformio.package.meta import PackageSpec class PackageManagerUninstallMixin(object): @@ -73,18 +73,4 @@ class PackageManagerUninstallMixin(object): return pkg def uninstall_dependencies(self, pkg, silent=False): - assert isinstance(pkg, PackageItem) - manifest = self.load_manifest(pkg) - if not manifest.get("dependencies"): - return - if not silent: - self.print_message("Removing dependencies...", fg="yellow") - for dependency in manifest.get("dependencies"): - pkg = self.get_package( - PackageSpec( - name=dependency.get("name"), requirements=dependency.get("version") - ) - ) - if not pkg: - continue - self._uninstall(pkg, silent=silent) + pass diff --git a/platformio/package/manager/library.py b/platformio/package/manager/library.py index 1375e84e..a0d1407f 100644 --- a/platformio/package/manager/library.py +++ b/platformio/package/manager/library.py @@ -17,7 +17,7 @@ import os from platformio.package.exception import MissingPackageManifestError from platformio.package.manager.base import BasePackageManager -from platformio.package.meta import PackageSpec, PackageType +from platformio.package.meta import PackageItem, PackageSpec, PackageType from platformio.project.helpers import get_project_global_lib_dir @@ -62,3 +62,46 @@ class LibraryPackageManager(BasePackageManager): # pylint: disable=too-many-anc return os.path.dirname(root) return root return path + + def install_dependencies(self, pkg, silent=False): + assert isinstance(pkg, PackageItem) + manifest = self.load_manifest(pkg) + if not manifest.get("dependencies"): + return + if not silent: + self.print_message("Installing dependencies...") + for dependency in manifest.get("dependencies"): + if not self._install_dependency(dependency, silent) and not silent: + self.print_message( + "Warning! Could not install dependency %s for package '%s'" + % (dependency, pkg.metadata.name), + fg="yellow", + ) + + def _install_dependency(self, dependency, silent=False): + spec = PackageSpec( + name=dependency.get("name"), requirements=dependency.get("version") + ) + search_filters = { + key: value + for key, value in dependency.items() + if key in ("authors", "platforms", "frameworks") + } + return self._install(spec, search_filters=search_filters or None, silent=silent) + + def uninstall_dependencies(self, pkg, silent=False): + assert isinstance(pkg, PackageItem) + manifest = self.load_manifest(pkg) + if not manifest.get("dependencies"): + return + if not silent: + self.print_message("Removing dependencies...", fg="yellow") + for dependency in manifest.get("dependencies"): + pkg = self.get_package( + PackageSpec( + name=dependency.get("name"), requirements=dependency.get("version") + ) + ) + if not pkg: + continue + self._uninstall(pkg, silent=silent)