Minor enhancements

This commit is contained in:
Ivan Kravets
2022-03-23 18:00:31 +02:00
parent 99e0d1071a
commit 95604ff66a
10 changed files with 32 additions and 30 deletions

View File

@ -209,7 +209,7 @@ def PrintConfiguration(env): # pylint: disable=too-many-statements
data = []
for item in platform.dump_used_packages():
original_version = get_original_version(item["version"])
info = "%s %s" % (item["name"], item["version"])
info = "%s @ %s" % (item["name"], item["version"])
extra = []
if original_version:
extra.append(original_version)

View File

@ -21,7 +21,7 @@ import click
from platformio import app, compat, fs, util
from platformio.package.exception import PackageException, UnknownPackageError
from platformio.package.meta import PackageItem, PackageSpec
from platformio.package.meta import PackageItem
from platformio.package.unpack import FileUnpacker
from platformio.package.vcsclient import VCSClientFactory
@ -78,7 +78,7 @@ class PackageManagerInstallMixin(object):
if pkg:
self.log.debug(
click.style(
"{name} @ {version} is already installed".format(
"{name}@{version} is already installed".format(
**pkg.metadata.as_dict()
),
fg="yellow",
@ -104,9 +104,7 @@ class PackageManagerInstallMixin(object):
self.log.info(
click.style(
"{name} @ {version} has been installed!".format(
**pkg.metadata.as_dict()
),
"{name}@{version} has been installed!".format(**pkg.metadata.as_dict()),
fg="green",
)
)
@ -119,14 +117,14 @@ class PackageManagerInstallMixin(object):
def install_dependencies(self, pkg, print_header=True):
assert isinstance(pkg, PackageItem)
dependencies = self.load_manifest(pkg).get("dependencies")
dependencies = dependencies = self.get_pkg_dependencies(pkg)
if not dependencies:
return
if print_header:
self.log.info("Resolving dependencies...")
for dependency in dependencies:
try:
self._install_dependency(dependency)
self.install_dependency(dependency)
except UnknownPackageError:
if dependency.get("owner"):
self.log.warning(
@ -137,12 +135,8 @@ class PackageManagerInstallMixin(object):
)
)
def _install_dependency(self, dependency):
spec = PackageSpec(
owner=dependency.get("owner"),
name=dependency.get("name"),
requirements=dependency.get("version"),
)
def install_dependency(self, dependency):
spec = self.dependency_to_spec(dependency)
search_filters = {
key: value
for key, value in dependency.items()

View File

@ -179,7 +179,7 @@ class PackageManageRegistryMixin(object):
for item in packages:
self.log.warning(
" - {owner}/{name} @ {version}".format(
" - {owner}/{name}@{version}".format(
owner=click.style(item["owner"]["username"], fg="cyan"),
name=item["name"],
version=item["version"]["name"],

View File

@ -67,7 +67,7 @@ class PackageManagerUninstallMixin(object):
self.log.info(
click.style(
"{name} @ {version} has been removed!".format(**pkg.metadata.as_dict()),
"{name}@{version} has been removed!".format(**pkg.metadata.as_dict()),
fg="green",
)
)
@ -76,17 +76,12 @@ class PackageManagerUninstallMixin(object):
def uninstall_dependencies(self, pkg):
assert isinstance(pkg, PackageItem)
dependencies = self.load_manifest(pkg).get("dependencies")
dependencies = self.get_pkg_dependencies(pkg)
if not dependencies:
return
self.log.info("Removing dependencies...")
for dependency in dependencies:
spec = PackageSpec(
owner=dependency.get("owner"),
name=dependency.get("name"),
requirements=dependency.get("version"),
)
pkg = self.get_package(spec)
pkg = self.get_package(self.dependency_to_spec(dependency))
if not pkg:
continue
self._uninstall(pkg)

View File

@ -92,7 +92,7 @@ class PackageManagerUpdateMixin(object):
if not outdated.is_outdated(allow_incompatible=False):
self.log.debug(
click.style(
"{name} @ {version} is already up-to-date".format(
"{name}@{version} is already up-to-date".format(
**pkg.metadata.as_dict()
),
fg="yellow",

View File

@ -287,3 +287,14 @@ class BasePackageManager( # pylint: disable=too-many-public-methods,too-many-in
return False
return True
def get_pkg_dependencies(self, pkg):
return self.load_manifest(pkg).get("dependencies")
@staticmethod
def dependency_to_spec(dependency):
return PackageSpec(
owner=dependency.get("owner"),
name=dependency.get("name"),
requirements=dependency.get("version"),
)

View File

@ -161,7 +161,7 @@ def remove_unnecessary_platform_packages(dry_run=False):
core_packages = get_installed_core_packages()
for platform in PlatformPackageManager().get_installed():
p = PlatformFactory.new(platform)
for pkg in p.get_installed_packages(with_optional=True):
for pkg in p.get_installed_packages(with_optional_versions=True):
required.add(pkg)
pm = ToolPackageManager()

View File

@ -36,11 +36,13 @@ class PlatformPackagesMixin(object):
pkg = self.get_package(name)
return str(pkg.metadata.version) if pkg else None
def get_installed_packages(self, with_optional=False):
def get_installed_packages(self, with_optional=True, with_optional_versions=False):
result = []
for name, options in self.packages.items():
for name, options in dict(sorted(self.packages.items())).items():
if not with_optional and options.get("optional"):
continue
versions = [options.get("version")]
if with_optional:
if with_optional_versions:
versions.extend(options.get("optionalVersions", []))
for version in versions:
if not version:

View File

@ -36,7 +36,7 @@ class PlatformFactory(object):
raise UnknownPlatform(name)
@classmethod
def new(cls, pkg_or_spec, autoinstall=False):
def new(cls, pkg_or_spec, autoinstall=False) -> PlatformBase:
# pylint: disable=import-outside-toplevel
from platformio.package.manager.platform import PlatformPackageManager

View File

@ -235,4 +235,4 @@ def test_update(clirunner, validate_cliresult, isolated_pio_core, tmpdir_factory
cmd_lib, ["-d", str(storage_dir), "update", "ArduinoJson @ ^5"]
)
validate_cliresult(result)
assert "ArduinoJson @ 5.13.4 is already up-to-date" in result.stdout
assert "ArduinoJson@5.13.4 is already up-to-date" in result.stdout