forked from platformio/platformio-core
Improve updating of development platforms
This commit is contained in:
3
Makefile
3
Makefile
@ -5,12 +5,11 @@ lint:
|
|||||||
isort:
|
isort:
|
||||||
isort -rc ./platformio
|
isort -rc ./platformio
|
||||||
isort -rc ./tests
|
isort -rc ./tests
|
||||||
isort -rc ./scripts
|
|
||||||
|
|
||||||
yapf:
|
yapf:
|
||||||
yapf --recursive --in-place platformio/
|
yapf --recursive --in-place platformio/
|
||||||
|
|
||||||
before-commit: isort yapf pylint
|
before-commit: isort yapf lint
|
||||||
|
|
||||||
clean-docs:
|
clean-docs:
|
||||||
rm -rf docs/_build
|
rm -rf docs/_build
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
VERSION = (3, 0, "0.dev19")
|
VERSION = (3, 0, "0.dev20")
|
||||||
__version__ = ".".join([str(s) for s in VERSION])
|
__version__ = ".".join([str(s) for s in VERSION])
|
||||||
|
|
||||||
__title__ = "platformio"
|
__title__ = "platformio"
|
||||||
|
@ -522,6 +522,7 @@ class BasePkgManager(PkgRepoMixin, PkgInstallerMixin):
|
|||||||
click.echo("[%s]" % (click.style("Out-of-date", fg="red")))
|
click.echo("[%s]" % (click.style("Out-of-date", fg="red")))
|
||||||
if only_check:
|
if only_check:
|
||||||
return
|
return
|
||||||
|
self.uninstall(name, manifest['version'], trigger_event=False)
|
||||||
self.install(name, latest_version, trigger_event=False)
|
self.install(name, latest_version, trigger_event=False)
|
||||||
|
|
||||||
telemetry.on_event(
|
telemetry.on_event(
|
||||||
|
@ -43,7 +43,8 @@ class PlatformManager(BasePkgManager):
|
|||||||
return "platform.json"
|
return "platform.json"
|
||||||
|
|
||||||
def install(self, # pylint: disable=too-many-arguments,arguments-differ
|
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):
|
without_packages=None, skip_default_package=False):
|
||||||
platform_dir = BasePkgManager.install(self, name, requirements)
|
platform_dir = BasePkgManager.install(self, name, requirements)
|
||||||
p = PlatformFactory.newPlatform(self.get_manifest_path(platform_dir))
|
p = PlatformFactory.newPlatform(self.get_manifest_path(platform_dir))
|
||||||
@ -52,12 +53,14 @@ class PlatformManager(BasePkgManager):
|
|||||||
self.cleanup_packages(p.packages.keys())
|
self.cleanup_packages(p.packages.keys())
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def uninstall( # pylint: disable=arguments-differ
|
def uninstall(self, name, requirements=None, trigger_event=True):
|
||||||
self, name, requirements=None):
|
|
||||||
name, requirements, _ = self.parse_pkg_name(name, requirements)
|
name, requirements, _ = self.parse_pkg_name(name, requirements)
|
||||||
p = PlatformFactory.newPlatform(name, requirements)
|
p = PlatformFactory.newPlatform(name, requirements)
|
||||||
BasePkgManager.uninstall(self, 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
|
return True
|
||||||
|
|
||||||
def update(self, # pylint: disable=arguments-differ
|
def update(self, # pylint: disable=arguments-differ
|
||||||
@ -67,7 +70,6 @@ class PlatformManager(BasePkgManager):
|
|||||||
BasePkgManager.update(self, name, requirements, only_check)
|
BasePkgManager.update(self, name, requirements, only_check)
|
||||||
p = PlatformFactory.newPlatform(name, requirements)
|
p = PlatformFactory.newPlatform(name, requirements)
|
||||||
p.update_packages(only_check)
|
p.update_packages(only_check)
|
||||||
self.cleanup_packages(p.packages.keys())
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def is_outdated(self, name, requirements=None):
|
def is_outdated(self, name, requirements=None):
|
||||||
@ -137,13 +139,13 @@ class PlatformFactory(object):
|
|||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def newPlatform(cls, name, requirements=None):
|
def newPlatform(cls, name, requirements=None):
|
||||||
if not requirements and "@" in name:
|
|
||||||
name, requirements = name.rsplit("@", 1)
|
|
||||||
platform_dir = None
|
platform_dir = None
|
||||||
if name.endswith("platform.json") and isfile(name):
|
if name.endswith("platform.json") and isfile(name):
|
||||||
platform_dir = dirname(name)
|
platform_dir = dirname(name)
|
||||||
name = util.load_json(name)['name']
|
name = util.load_json(name)['name']
|
||||||
else:
|
else:
|
||||||
|
if not requirements and "@" in name:
|
||||||
|
name, requirements = name.rsplit("@", 1)
|
||||||
platform_dir = PlatformManager().get_installed_dir(name,
|
platform_dir = PlatformManager().get_installed_dir(name,
|
||||||
requirements)
|
requirements)
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user