mirror of
https://github.com/platformio/platformio-core.git
synced 2025-07-30 10:07:14 +02:00
Minor enhancements
This commit is contained in:
@ -209,7 +209,7 @@ def PrintConfiguration(env): # pylint: disable=too-many-statements
|
|||||||
data = []
|
data = []
|
||||||
for item in platform.dump_used_packages():
|
for item in platform.dump_used_packages():
|
||||||
original_version = get_original_version(item["version"])
|
original_version = get_original_version(item["version"])
|
||||||
info = "%s %s" % (item["name"], item["version"])
|
info = "%s @ %s" % (item["name"], item["version"])
|
||||||
extra = []
|
extra = []
|
||||||
if original_version:
|
if original_version:
|
||||||
extra.append(original_version)
|
extra.append(original_version)
|
||||||
|
@ -21,7 +21,7 @@ import click
|
|||||||
|
|
||||||
from platformio import app, compat, fs, util
|
from platformio import app, compat, fs, util
|
||||||
from platformio.package.exception import PackageException, UnknownPackageError
|
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.unpack import FileUnpacker
|
||||||
from platformio.package.vcsclient import VCSClientFactory
|
from platformio.package.vcsclient import VCSClientFactory
|
||||||
|
|
||||||
@ -78,7 +78,7 @@ class PackageManagerInstallMixin(object):
|
|||||||
if pkg:
|
if pkg:
|
||||||
self.log.debug(
|
self.log.debug(
|
||||||
click.style(
|
click.style(
|
||||||
"{name} @ {version} is already installed".format(
|
"{name}@{version} is already installed".format(
|
||||||
**pkg.metadata.as_dict()
|
**pkg.metadata.as_dict()
|
||||||
),
|
),
|
||||||
fg="yellow",
|
fg="yellow",
|
||||||
@ -104,9 +104,7 @@ class PackageManagerInstallMixin(object):
|
|||||||
|
|
||||||
self.log.info(
|
self.log.info(
|
||||||
click.style(
|
click.style(
|
||||||
"{name} @ {version} has been installed!".format(
|
"{name}@{version} has been installed!".format(**pkg.metadata.as_dict()),
|
||||||
**pkg.metadata.as_dict()
|
|
||||||
),
|
|
||||||
fg="green",
|
fg="green",
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -119,14 +117,14 @@ class PackageManagerInstallMixin(object):
|
|||||||
|
|
||||||
def install_dependencies(self, pkg, print_header=True):
|
def install_dependencies(self, pkg, print_header=True):
|
||||||
assert isinstance(pkg, PackageItem)
|
assert isinstance(pkg, PackageItem)
|
||||||
dependencies = self.load_manifest(pkg).get("dependencies")
|
dependencies = dependencies = self.get_pkg_dependencies(pkg)
|
||||||
if not dependencies:
|
if not dependencies:
|
||||||
return
|
return
|
||||||
if print_header:
|
if print_header:
|
||||||
self.log.info("Resolving dependencies...")
|
self.log.info("Resolving dependencies...")
|
||||||
for dependency in dependencies:
|
for dependency in dependencies:
|
||||||
try:
|
try:
|
||||||
self._install_dependency(dependency)
|
self.install_dependency(dependency)
|
||||||
except UnknownPackageError:
|
except UnknownPackageError:
|
||||||
if dependency.get("owner"):
|
if dependency.get("owner"):
|
||||||
self.log.warning(
|
self.log.warning(
|
||||||
@ -137,12 +135,8 @@ class PackageManagerInstallMixin(object):
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
def _install_dependency(self, dependency):
|
def install_dependency(self, dependency):
|
||||||
spec = PackageSpec(
|
spec = self.dependency_to_spec(dependency)
|
||||||
owner=dependency.get("owner"),
|
|
||||||
name=dependency.get("name"),
|
|
||||||
requirements=dependency.get("version"),
|
|
||||||
)
|
|
||||||
search_filters = {
|
search_filters = {
|
||||||
key: value
|
key: value
|
||||||
for key, value in dependency.items()
|
for key, value in dependency.items()
|
||||||
|
@ -179,7 +179,7 @@ class PackageManageRegistryMixin(object):
|
|||||||
|
|
||||||
for item in packages:
|
for item in packages:
|
||||||
self.log.warning(
|
self.log.warning(
|
||||||
" - {owner}/{name} @ {version}".format(
|
" - {owner}/{name}@{version}".format(
|
||||||
owner=click.style(item["owner"]["username"], fg="cyan"),
|
owner=click.style(item["owner"]["username"], fg="cyan"),
|
||||||
name=item["name"],
|
name=item["name"],
|
||||||
version=item["version"]["name"],
|
version=item["version"]["name"],
|
||||||
|
@ -67,7 +67,7 @@ class PackageManagerUninstallMixin(object):
|
|||||||
|
|
||||||
self.log.info(
|
self.log.info(
|
||||||
click.style(
|
click.style(
|
||||||
"{name} @ {version} has been removed!".format(**pkg.metadata.as_dict()),
|
"{name}@{version} has been removed!".format(**pkg.metadata.as_dict()),
|
||||||
fg="green",
|
fg="green",
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -76,17 +76,12 @@ class PackageManagerUninstallMixin(object):
|
|||||||
|
|
||||||
def uninstall_dependencies(self, pkg):
|
def uninstall_dependencies(self, pkg):
|
||||||
assert isinstance(pkg, PackageItem)
|
assert isinstance(pkg, PackageItem)
|
||||||
dependencies = self.load_manifest(pkg).get("dependencies")
|
dependencies = self.get_pkg_dependencies(pkg)
|
||||||
if not dependencies:
|
if not dependencies:
|
||||||
return
|
return
|
||||||
self.log.info("Removing dependencies...")
|
self.log.info("Removing dependencies...")
|
||||||
for dependency in dependencies:
|
for dependency in dependencies:
|
||||||
spec = PackageSpec(
|
pkg = self.get_package(self.dependency_to_spec(dependency))
|
||||||
owner=dependency.get("owner"),
|
|
||||||
name=dependency.get("name"),
|
|
||||||
requirements=dependency.get("version"),
|
|
||||||
)
|
|
||||||
pkg = self.get_package(spec)
|
|
||||||
if not pkg:
|
if not pkg:
|
||||||
continue
|
continue
|
||||||
self._uninstall(pkg)
|
self._uninstall(pkg)
|
||||||
|
@ -92,7 +92,7 @@ class PackageManagerUpdateMixin(object):
|
|||||||
if not outdated.is_outdated(allow_incompatible=False):
|
if not outdated.is_outdated(allow_incompatible=False):
|
||||||
self.log.debug(
|
self.log.debug(
|
||||||
click.style(
|
click.style(
|
||||||
"{name} @ {version} is already up-to-date".format(
|
"{name}@{version} is already up-to-date".format(
|
||||||
**pkg.metadata.as_dict()
|
**pkg.metadata.as_dict()
|
||||||
),
|
),
|
||||||
fg="yellow",
|
fg="yellow",
|
||||||
|
@ -287,3 +287,14 @@ class BasePackageManager( # pylint: disable=too-many-public-methods,too-many-in
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
return True
|
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()
|
core_packages = get_installed_core_packages()
|
||||||
for platform in PlatformPackageManager().get_installed():
|
for platform in PlatformPackageManager().get_installed():
|
||||||
p = PlatformFactory.new(platform)
|
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)
|
required.add(pkg)
|
||||||
|
|
||||||
pm = ToolPackageManager()
|
pm = ToolPackageManager()
|
||||||
|
@ -36,11 +36,13 @@ class PlatformPackagesMixin(object):
|
|||||||
pkg = self.get_package(name)
|
pkg = self.get_package(name)
|
||||||
return str(pkg.metadata.version) if pkg else None
|
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 = []
|
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")]
|
versions = [options.get("version")]
|
||||||
if with_optional:
|
if with_optional_versions:
|
||||||
versions.extend(options.get("optionalVersions", []))
|
versions.extend(options.get("optionalVersions", []))
|
||||||
for version in versions:
|
for version in versions:
|
||||||
if not version:
|
if not version:
|
||||||
|
@ -36,7 +36,7 @@ class PlatformFactory(object):
|
|||||||
raise UnknownPlatform(name)
|
raise UnknownPlatform(name)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def new(cls, pkg_or_spec, autoinstall=False):
|
def new(cls, pkg_or_spec, autoinstall=False) -> PlatformBase:
|
||||||
# pylint: disable=import-outside-toplevel
|
# pylint: disable=import-outside-toplevel
|
||||||
from platformio.package.manager.platform import PlatformPackageManager
|
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"]
|
cmd_lib, ["-d", str(storage_dir), "update", "ArduinoJson @ ^5"]
|
||||||
)
|
)
|
||||||
validate_cliresult(result)
|
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