From e9ed55b6e91298d47b9a8e69ecc45ec636fe12fc Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Fri, 5 Aug 2016 13:51:28 +0300 Subject: [PATCH] Improve updating of development platforms --- Makefile | 3 +-- platformio/__init__.py | 2 +- platformio/managers/package.py | 1 + platformio/managers/platform.py | 16 +++++++++------- 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/Makefile b/Makefile index 2117e072..51b3d166 100644 --- a/Makefile +++ b/Makefile @@ -5,12 +5,11 @@ lint: isort: isort -rc ./platformio isort -rc ./tests - isort -rc ./scripts yapf: yapf --recursive --in-place platformio/ -before-commit: isort yapf pylint +before-commit: isort yapf lint clean-docs: rm -rf docs/_build diff --git a/platformio/__init__.py b/platformio/__init__.py index e06d38ef..8948d92b 100644 --- a/platformio/__init__.py +++ b/platformio/__init__.py @@ -14,7 +14,7 @@ import sys -VERSION = (3, 0, "0.dev19") +VERSION = (3, 0, "0.dev20") __version__ = ".".join([str(s) for s in VERSION]) __title__ = "platformio" diff --git a/platformio/managers/package.py b/platformio/managers/package.py index 21769fce..3f111d9d 100644 --- a/platformio/managers/package.py +++ b/platformio/managers/package.py @@ -522,6 +522,7 @@ class BasePkgManager(PkgRepoMixin, PkgInstallerMixin): click.echo("[%s]" % (click.style("Out-of-date", fg="red"))) if only_check: return + self.uninstall(name, manifest['version'], trigger_event=False) self.install(name, latest_version, trigger_event=False) telemetry.on_event( diff --git a/platformio/managers/platform.py b/platformio/managers/platform.py index fbfc0af3..aae99081 100644 --- a/platformio/managers/platform.py +++ b/platformio/managers/platform.py @@ -43,7 +43,8 @@ class PlatformManager(BasePkgManager): return "platform.json" def install(self, # pylint: disable=too-many-arguments,arguments-differ - name, requirements=None, with_packages=None, + name, requirements=None, quiet=False, + trigger_event=True, with_packages=None, without_packages=None, skip_default_package=False): platform_dir = BasePkgManager.install(self, name, requirements) p = PlatformFactory.newPlatform(self.get_manifest_path(platform_dir)) @@ -52,12 +53,14 @@ class PlatformManager(BasePkgManager): self.cleanup_packages(p.packages.keys()) return True - def uninstall( # pylint: disable=arguments-differ - self, name, requirements=None): + def uninstall(self, name, requirements=None, trigger_event=True): name, requirements, _ = self.parse_pkg_name(name, requirements) p = PlatformFactory.newPlatform(name, requirements) BasePkgManager.uninstall(self, name, requirements) - self.cleanup_packages(p.packages.keys()) + # trigger event is disabled when upgrading operation + # don't cleanup packages, "install" will do that + if trigger_event: + self.cleanup_packages(p.packages.keys()) return True def update(self, # pylint: disable=arguments-differ @@ -67,7 +70,6 @@ class PlatformManager(BasePkgManager): BasePkgManager.update(self, name, requirements, only_check) p = PlatformFactory.newPlatform(name, requirements) p.update_packages(only_check) - self.cleanup_packages(p.packages.keys()) return True def is_outdated(self, name, requirements=None): @@ -137,13 +139,13 @@ class PlatformFactory(object): @classmethod def newPlatform(cls, name, requirements=None): - if not requirements and "@" in name: - name, requirements = name.rsplit("@", 1) platform_dir = None if name.endswith("platform.json") and isfile(name): platform_dir = dirname(name) name = util.load_json(name)['name'] else: + if not requirements and "@" in name: + name, requirements = name.rsplit("@", 1) platform_dir = PlatformManager().get_installed_dir(name, requirements)