mirror of
https://github.com/platformio/platformio-core.git
synced 2025-07-29 17:47:14 +02:00
Minor enhancements
This commit is contained in:
@ -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)
|
||||
|
@ -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()
|
||||
|
@ -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"],
|
||||
|
@ -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)
|
||||
|
@ -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",
|
||||
|
@ -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"),
|
||||
)
|
||||
|
@ -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()
|
||||
|
@ -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:
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
Reference in New Issue
Block a user