diff --git a/platformio/exception.py b/platformio/exception.py index bc16f2e2..0f0530b6 100644 --- a/platformio/exception.py +++ b/platformio/exception.py @@ -58,7 +58,7 @@ class BoardNotDefined(PlatformioException): MESSAGE = "You need to specify board ID using `-b` or `--board` "\ "option. Supported boards list is available via "\ - " `platformio boards` command" + "`platformio boards` command" class UnknownBoard(PlatformioException): diff --git a/platformio/managers/lib.py b/platformio/managers/lib.py index 553f0803..ea5b343f 100644 --- a/platformio/managers/lib.py +++ b/platformio/managers/lib.py @@ -230,12 +230,13 @@ class LibraryManager(BasePkgManager): name, dl_data['url'].replace("http://", "https://") if app.get_setting("enable_ssl") else dl_data['url'], requirements) - def install(self, - name, - requirements=None, - silent=False, - trigger_event=True, - interactive=False): + def install( # pylint: disable=arguments-differ + self, + name, + requirements=None, + silent=False, + trigger_event=True, + interactive=False): try: _name, _requirements, _url = self.parse_pkg_input(name, requirements) diff --git a/platformio/managers/package.py b/platformio/managers/package.py index 6cfdacb8..1f9bffd6 100644 --- a/platformio/managers/package.py +++ b/platformio/managers/package.py @@ -346,7 +346,7 @@ class PkgInstallerMixin(object): sha1=None, track=False): pkg_dir = None - tmp_dir = mkdtemp("-package", "installing-", self.package_dir) + tmp_dir = mkdtemp("-package", "_tmp_installing-", self.package_dir) src_manifest_dir = None src_manifest = {"name": name, "url": url, "requirements": requirements} @@ -591,8 +591,7 @@ class BasePkgManager(PkgRepoMixin, PkgInstallerMixin): name, requirements=None, silent=False, - trigger_event=True, - interactive=False): # pylint: disable=unused-argument + trigger_event=True): name, requirements, url = self.parse_pkg_input(name, requirements) package_dir = self.get_package_dir(name, requirements, url) diff --git a/platformio/managers/platform.py b/platformio/managers/platform.py index 9c68d2bc..99a38d86 100644 --- a/platformio/managers/platform.py +++ b/platformio/managers/platform.py @@ -62,17 +62,21 @@ class PlatformManager(BasePkgManager): without_packages=None, skip_default_package=False, trigger_event=True, + silent=False, **_): # pylint: disable=too-many-arguments - platform_dir = BasePkgManager.install(self, name, requirements) + platform_dir = BasePkgManager.install( + self, name, requirements, silent=silent) p = PlatformFactory.newPlatform(platform_dir) # @Hook: when 'update' operation (trigger_event is False), # don't cleanup packages or install them if not trigger_event: return True - - p.install_packages(with_packages, without_packages, - skip_default_package) + p.install_packages( + with_packages, + without_packages, + skip_default_package, + silent=silent) self.cleanup_packages(p.packages.keys()) return True @@ -231,8 +235,8 @@ class PlatformPackagesMixin(object): without_packages=None, skip_default_package=False, silent=False): - with_packages = set(self.pkg_types_to_names(with_packages or [])) - without_packages = set(self.pkg_types_to_names(without_packages or [])) + with_packages = set(self.find_pkg_names(with_packages or [])) + without_packages = set(self.find_pkg_names(without_packages or [])) upkgs = with_packages | without_packages ppkgs = set(self.packages.keys()) @@ -256,6 +260,23 @@ class PlatformPackagesMixin(object): return True + def find_pkg_names(self, items): + result = [] + for item in items: + candidate = item + + # lookup by package types + for _name, _opts in self.packages.items(): + if _opts.get("type") == item: + candidate = _name + + if (self.frameworks and item.startswith("framework-") and + item[10:] in self.frameworks): + candidate = self.frameworks[item[10:]]['package'] + + result.append(candidate) + return result + def update_packages(self, only_check=False): for name, manifest in self.get_installed_packages().items(): version = self.packages[name].get("version", "") @@ -518,20 +539,6 @@ class PlatformBase( # pylint: disable=too-many-public-methods def get_package_type(self, name): return self.packages[name].get("type") - def pkg_types_to_names(self, types): - names = [] - for type_ in types: - name = type_ - # lookup by package types - for _name, _opts in self.packages.items(): - if _opts.get("type") == type_: - name = None - names.append(_name) - # if type is the right name - if name: - names.append(name) - return names - def configure_default_packages(self, variables, targets): # enable used frameworks frameworks = variables.get("pioframework", [])