forked from platformio/platformio-core
Don’t check packages when check platform version
This commit is contained in:
@ -137,10 +137,7 @@ def platform_update(platforms, only_packages, only_check, json_output):
|
||||
continue
|
||||
manifest = pm.load_manifest(
|
||||
pm.get_package_dir(name, requirements, url))
|
||||
if latest is True:
|
||||
manifest['versionLatest'] = "Out-of-date"
|
||||
else:
|
||||
manifest['versionLatest'] = latest or "Unknown"
|
||||
manifest['versionLatest'] = latest or "Unknown"
|
||||
result.append(manifest)
|
||||
return click.echo(json.dumps(result))
|
||||
else:
|
||||
|
@ -635,9 +635,7 @@ class BasePkgManager(PkgRepoMixin, PkgInstallerMixin):
|
||||
click.echo("[%s]" % (click.style("Off-line", fg="yellow")))
|
||||
return
|
||||
latest = self.outdated(name, requirements, url)
|
||||
if latest is True:
|
||||
click.echo("[%s]" % (click.style("Out-of-date", fg="red")))
|
||||
elif latest:
|
||||
if latest:
|
||||
click.echo("[%s]" % (click.style(latest, fg="red")))
|
||||
elif latest is False:
|
||||
click.echo("[%s]" % (click.style("Up-to-date", fg="green")))
|
||||
@ -659,11 +657,11 @@ class BasePkgManager(PkgRepoMixin, PkgInstallerMixin):
|
||||
with open(manifest_path, "w") as fp:
|
||||
manifest['version'] = vcs.get_current_revision()
|
||||
json.dump(manifest, fp)
|
||||
self.reset_cache()
|
||||
else:
|
||||
self.uninstall(name, manifest['version'], trigger_event=False)
|
||||
self.install(name, latest, trigger_event=False)
|
||||
|
||||
self.reset_cache()
|
||||
telemetry.on_event(
|
||||
category=self.__class__.__name__,
|
||||
action="Update",
|
||||
|
@ -60,9 +60,16 @@ class PlatformManager(BasePkgManager):
|
||||
with_packages=None,
|
||||
without_packages=None,
|
||||
skip_default_package=False,
|
||||
trigger_event=True,
|
||||
**_): # pylint: disable=too-many-arguments
|
||||
platform_dir = BasePkgManager.install(self, name, requirements)
|
||||
p = PlatformFactory.newPlatform(self.get_manifest_path(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)
|
||||
self.cleanup_packages(p.packages.keys())
|
||||
@ -72,10 +79,13 @@ class PlatformManager(BasePkgManager):
|
||||
name, requirements, _ = self.parse_pkg_name(name, requirements)
|
||||
p = PlatformFactory.newPlatform(name, requirements)
|
||||
BasePkgManager.uninstall(self, name, requirements)
|
||||
# trigger event is disabled when upgrading operation
|
||||
# don't cleanup packages, "install" will do that
|
||||
if trigger_event:
|
||||
self.cleanup_packages(p.packages.keys())
|
||||
|
||||
# @Hook: when 'update' operation (trigger_event is False),
|
||||
# don't cleanup packages or install them
|
||||
if not trigger_event:
|
||||
return True
|
||||
|
||||
self.cleanup_packages(p.packages.keys())
|
||||
return True
|
||||
|
||||
def update( # pylint: disable=arguments-differ
|
||||
@ -85,19 +95,24 @@ class PlatformManager(BasePkgManager):
|
||||
only_packages=False,
|
||||
only_check=False):
|
||||
name, requirements, _ = self.parse_pkg_name(name, requirements)
|
||||
|
||||
p = PlatformFactory.newPlatform(name, requirements)
|
||||
pkgs_before = pkgs_after = p.get_installed_packages().keys()
|
||||
|
||||
if not only_packages:
|
||||
BasePkgManager.update(self, name, requirements, only_check)
|
||||
p = PlatformFactory.newPlatform(name, requirements)
|
||||
p = PlatformFactory.newPlatform(name, requirements)
|
||||
pkgs_after = p.get_installed_packages().keys()
|
||||
|
||||
p.update_packages(only_check)
|
||||
self.cleanup_packages(p.packages.keys())
|
||||
return True
|
||||
|
||||
def outdated(self, name, requirements=None, url=None):
|
||||
latest = BasePkgManager.outdated(self, name, requirements, url)
|
||||
if latest:
|
||||
return latest
|
||||
p = PlatformFactory.newPlatform(name, requirements)
|
||||
return p.are_outdated_packages()
|
||||
pkgs_missed = set(pkgs_before) - set(pkgs_after)
|
||||
if pkgs_missed:
|
||||
p.install_packages(
|
||||
with_packages=pkgs_missed, skip_default_package=True)
|
||||
|
||||
return True
|
||||
|
||||
def cleanup_packages(self, names):
|
||||
self.reset_cache()
|
||||
|
@ -53,10 +53,14 @@ def test_install_unknown_from_registry(clirunner, validate_cliresult,
|
||||
|
||||
def test_install_known_version(clirunner, validate_cliresult,
|
||||
isolated_pio_home):
|
||||
result = clirunner.invoke(cli_platform.platform_install,
|
||||
["atmelavr@1.1.0", "--skip-default-package"])
|
||||
result = clirunner.invoke(cli_platform.platform_install, [
|
||||
"atmelavr@1.1.0", "--skip-default-package", "--with-package",
|
||||
"tool-avrdude"
|
||||
])
|
||||
validate_cliresult(result)
|
||||
assert "atmelavr @ 1.1.0" in result.output
|
||||
assert "Installing tool-avrdude @" in result.output
|
||||
assert len(isolated_pio_home.join("packages").listdir()) == 1
|
||||
|
||||
|
||||
def test_install_from_vcs(clirunner, validate_cliresult, isolated_pio_home):
|
||||
@ -92,12 +96,19 @@ def test_update_check(clirunner, validate_cliresult, isolated_pio_home):
|
||||
output = json.loads(result.output)
|
||||
assert len(output) == 1
|
||||
assert output[0]['name'] == "atmelavr"
|
||||
assert len(isolated_pio_home.join("packages").listdir()) == 1
|
||||
|
||||
|
||||
def test_update_raw(clirunner, validate_cliresult, isolated_pio_home):
|
||||
result = clirunner.invoke(cli_platform.platform_update)
|
||||
validate_cliresult(result)
|
||||
assert "Uninstalling atmelavr @ 1.1.0:" in result.output
|
||||
assert "PlatformManager: Installing atmelavr @" in result.output
|
||||
assert len(isolated_pio_home.join("packages").listdir()) == 1
|
||||
|
||||
|
||||
def test_uninstall(clirunner, validate_cliresult, isolated_pio_home):
|
||||
result = clirunner.invoke(cli_platform.platform_uninstall,
|
||||
["atmelavr", "espressif8266_stage"])
|
||||
validate_cliresult(result)
|
||||
assert len(
|
||||
[d.basename
|
||||
for d in isolated_pio_home.join("platforms").listdir()]) == 0
|
||||
assert len(isolated_pio_home.join("platforms").listdir()) == 0
|
||||
|
Reference in New Issue
Block a user