Improve updating of development platforms

This commit is contained in:
Ivan Kravets
2016-08-05 13:51:28 +03:00
parent dad8f9d80e
commit e9ed55b6e9
4 changed files with 12 additions and 10 deletions

View File

@ -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

View File

@ -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"

View File

@ -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(

View File

@ -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)