forked from platformio/platformio-core
Unfix installed package when the latest version is uninstalled
This commit is contained in:
@@ -118,10 +118,7 @@ def lib_update(lm, libraries, only_check, json_output):
|
|||||||
if not libraries:
|
if not libraries:
|
||||||
libraries = []
|
libraries = []
|
||||||
for manifest in lm.get_installed():
|
for manifest in lm.get_installed():
|
||||||
pkg_dir = manifest['__pkg_dir']
|
if "@vcs-" in manifest['__pkg_dir']:
|
||||||
if "@" in pkg_dir and "@vcs-" not in pkg_dir:
|
|
||||||
continue
|
|
||||||
elif "@vcs-" in pkg_dir:
|
|
||||||
libraries.append("%s=%s" % (manifest['name'], manifest['url']))
|
libraries.append("%s=%s" % (manifest['name'], manifest['url']))
|
||||||
else:
|
else:
|
||||||
libraries.append(str(manifest.get("id", manifest['name'])))
|
libraries.append(str(manifest.get("id", manifest['name'])))
|
||||||
@@ -131,7 +128,7 @@ def lib_update(lm, libraries, only_check, json_output):
|
|||||||
for library in libraries:
|
for library in libraries:
|
||||||
name, requirements, url = lm.parse_pkg_name(library)
|
name, requirements, url = lm.parse_pkg_name(library)
|
||||||
latest = lm.outdated(name, requirements, url)
|
latest = lm.outdated(name, requirements, url)
|
||||||
if latest is False:
|
if not latest:
|
||||||
continue
|
continue
|
||||||
manifest = lm.load_manifest(
|
manifest = lm.load_manifest(
|
||||||
lm.get_package_dir(name, requirements, url))
|
lm.get_package_dir(name, requirements, url))
|
||||||
|
@@ -337,11 +337,7 @@ def platform_update(platforms, only_packages, only_check, json_output):
|
|||||||
if not platforms:
|
if not platforms:
|
||||||
platforms = []
|
platforms = []
|
||||||
for manifest in pm.get_installed():
|
for manifest in pm.get_installed():
|
||||||
pkg_dir = manifest['__pkg_dir']
|
if "@vcs-" in manifest['__pkg_dir']:
|
||||||
# don't check fixed platforms
|
|
||||||
if "@" in pkg_dir and "@vcs-" not in pkg_dir:
|
|
||||||
continue
|
|
||||||
elif "@vcs-" in pkg_dir:
|
|
||||||
platforms.append("%s=%s" % (manifest['name'], manifest['url']))
|
platforms.append("%s=%s" % (manifest['name'], manifest['url']))
|
||||||
else:
|
else:
|
||||||
platforms.append(manifest['name'])
|
platforms.append(manifest['name'])
|
||||||
@@ -351,7 +347,7 @@ def platform_update(platforms, only_packages, only_check, json_output):
|
|||||||
for platform in platforms:
|
for platform in platforms:
|
||||||
name, requirements, url = pm.parse_pkg_name(platform)
|
name, requirements, url = pm.parse_pkg_name(platform)
|
||||||
latest = pm.outdated(name, requirements, url)
|
latest = pm.outdated(name, requirements, url)
|
||||||
if latest is False:
|
if not latest:
|
||||||
continue
|
continue
|
||||||
data = _get_installed_platform_data(
|
data = _get_installed_platform_data(
|
||||||
name, with_boards=False, expose_packages=False)
|
name, with_boards=False, expose_packages=False)
|
||||||
|
@@ -501,7 +501,8 @@ class BasePkgManager(PkgRepoMixin, PkgInstallerMixin):
|
|||||||
"""
|
"""
|
||||||
latest = None
|
latest = None
|
||||||
package_dir = self.get_package_dir(name, requirements, url)
|
package_dir = self.get_package_dir(name, requirements, url)
|
||||||
if not package_dir:
|
if not package_dir or ("@" in package_dir and
|
||||||
|
"@vcs-" not in package_dir):
|
||||||
return None
|
return None
|
||||||
is_vcs_pkg = False
|
is_vcs_pkg = False
|
||||||
manifest_path = self.get_vcs_manifest_path(package_dir)
|
manifest_path = self.get_vcs_manifest_path(package_dir)
|
||||||
@@ -598,10 +599,16 @@ class BasePkgManager(PkgRepoMixin, PkgInstallerMixin):
|
|||||||
os.unlink(package_dir)
|
os.unlink(package_dir)
|
||||||
else:
|
else:
|
||||||
util.rmtree_(package_dir)
|
util.rmtree_(package_dir)
|
||||||
|
self.reset_cache()
|
||||||
|
|
||||||
|
# unfix package with the same name
|
||||||
|
package_dir = self.get_package_dir(manifest['name'])
|
||||||
|
if package_dir and "@" in package_dir:
|
||||||
|
os.rename(package_dir, join(self.package_dir, manifest['name']))
|
||||||
|
self.reset_cache()
|
||||||
|
|
||||||
click.echo("[%s]" % click.style("OK", fg="green"))
|
click.echo("[%s]" % click.style("OK", fg="green"))
|
||||||
|
|
||||||
self.reset_cache()
|
|
||||||
if trigger_event:
|
if trigger_event:
|
||||||
telemetry.on_event(
|
telemetry.on_event(
|
||||||
category=self.__class__.__name__,
|
category=self.__class__.__name__,
|
||||||
@@ -644,7 +651,7 @@ class BasePkgManager(PkgRepoMixin, PkgInstallerMixin):
|
|||||||
elif latest is False:
|
elif latest is False:
|
||||||
click.echo("[%s]" % (click.style("Up-to-date", fg="green")))
|
click.echo("[%s]" % (click.style("Up-to-date", fg="green")))
|
||||||
else:
|
else:
|
||||||
click.echo("[%s]" % (click.style("Unknown", fg="yellow")))
|
click.echo("[%s]" % (click.style("Skip", fg="yellow")))
|
||||||
|
|
||||||
if only_check or latest is False or (not is_vcs_pkg and not latest):
|
if only_check or latest is False or (not is_vcs_pkg and not latest):
|
||||||
return
|
return
|
||||||
|
Reference in New Issue
Block a user