Rename meta.PackageSourceItem or PackageItem

This commit is contained in:
Ivan Kravets
2020-08-14 16:38:46 +03:00
parent ff8ec43a28
commit 5f3ad70190
9 changed files with 35 additions and 38 deletions

View File

@ -40,7 +40,7 @@ from platformio.package.manifest.parser import (
ManifestParserError, ManifestParserError,
ManifestParserFactory, ManifestParserFactory,
) )
from platformio.package.meta import PackageSourceItem from platformio.package.meta import PackageItem
from platformio.project.options import ProjectOptions from platformio.project.options import ProjectOptions
@ -1019,7 +1019,7 @@ def ConfigureProjectLibBuilder(env):
margin = "| " * (level) margin = "| " * (level)
for lb in root.depbuilders: for lb in root.depbuilders:
title = "<%s>" % lb.name title = "<%s>" % lb.name
pkg = PackageSourceItem(lb.path) pkg = PackageItem(lb.path)
if pkg.metadata: if pkg.metadata:
title += " %s" % pkg.metadata.version title += " %s" % pkg.metadata.version
elif lb.version: elif lb.version:

View File

@ -30,7 +30,7 @@ from platformio.commands.lib.helpers import (
from platformio.compat import dump_json_to_unicode from platformio.compat import dump_json_to_unicode
from platformio.package.exception import UnknownPackageError from platformio.package.exception import UnknownPackageError
from platformio.package.manager.library import LibraryPackageManager from platformio.package.manager.library import LibraryPackageManager
from platformio.package.meta import PackageSourceItem, PackageSpec from platformio.package.meta import PackageItem, PackageSpec
from platformio.proc import is_ci from platformio.proc import is_ci
from platformio.project.config import ProjectConfig from platformio.project.config import ProjectConfig
from platformio.project.helpers import get_project_dir, is_platformio_project from platformio.project.helpers import get_project_dir, is_platformio_project
@ -262,7 +262,7 @@ def lib_update( # pylint: disable=too-many-arguments
for library in _libraries: for library in _libraries:
spec = None spec = None
pkg = None pkg = None
if isinstance(library, PackageSourceItem): if isinstance(library, PackageItem):
pkg = library pkg = library
else: else:
spec = PackageSpec(library) spec = PackageSpec(library)
@ -284,9 +284,7 @@ def lib_update( # pylint: disable=too-many-arguments
else: else:
for library in _libraries: for library in _libraries:
to_spec = ( to_spec = (
None None if isinstance(library, PackageItem) else PackageSpec(library)
if isinstance(library, PackageSourceItem)
else PackageSpec(library)
) )
lm.update( lm.update(
library, to_spec=to_spec, only_check=only_check, silent=silent library, to_spec=to_spec, only_check=only_check, silent=silent

View File

@ -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 from platformio.package.exception import PackageException
from platformio.package.meta import PackageSourceItem, PackageSpec from platformio.package.meta import PackageItem, PackageSpec
from platformio.package.unpack import FileUnpacker from platformio.package.unpack import FileUnpacker
from platformio.package.vcsclient import VCSClientFactory from platformio.package.vcsclient import VCSClientFactory
@ -109,7 +109,7 @@ class PackageManagerInstallMixin(object):
return pkg return pkg
def _install_dependencies(self, pkg, silent=False): def _install_dependencies(self, pkg, silent=False):
assert isinstance(pkg, PackageSourceItem) assert isinstance(pkg, PackageItem)
manifest = self.load_manifest(pkg) manifest = self.load_manifest(pkg)
if not manifest.get("dependencies"): if not manifest.get("dependencies"):
return return
@ -155,7 +155,7 @@ class PackageManagerInstallMixin(object):
assert vcs.export() assert vcs.export()
root_dir = self.find_pkg_root(tmp_dir, spec) root_dir = self.find_pkg_root(tmp_dir, spec)
pkg_item = PackageSourceItem( pkg_item = PackageItem(
root_dir, root_dir,
self.build_metadata( self.build_metadata(
root_dir, spec, vcs.get_current_revision() if vcs else None root_dir, spec, vcs.get_current_revision() if vcs else None
@ -168,7 +168,7 @@ class PackageManagerInstallMixin(object):
fs.rmtree(tmp_dir) fs.rmtree(tmp_dir)
def _install_tmp_pkg(self, tmp_pkg): def _install_tmp_pkg(self, tmp_pkg):
assert isinstance(tmp_pkg, PackageSourceItem) assert isinstance(tmp_pkg, PackageItem)
# validate package version and declared requirements # validate package version and declared requirements
if ( if (
tmp_pkg.metadata.spec.requirements tmp_pkg.metadata.spec.requirements
@ -182,7 +182,7 @@ class PackageManagerInstallMixin(object):
tmp_pkg.metadata, tmp_pkg.metadata,
) )
) )
dst_pkg = PackageSourceItem( dst_pkg = PackageItem(
os.path.join(self.package_dir, tmp_pkg.get_safe_dirname()) os.path.join(self.package_dir, tmp_pkg.get_safe_dirname())
) )
@ -190,7 +190,7 @@ class PackageManagerInstallMixin(object):
action = "overwrite" action = "overwrite"
if tmp_pkg.metadata.spec.has_custom_name(): if tmp_pkg.metadata.spec.has_custom_name():
action = "overwrite" action = "overwrite"
dst_pkg = PackageSourceItem( dst_pkg = PackageItem(
os.path.join(self.package_dir, tmp_pkg.metadata.spec.name) os.path.join(self.package_dir, tmp_pkg.metadata.spec.name)
) )
elif dst_pkg.metadata and dst_pkg.metadata.spec.external: elif dst_pkg.metadata and dst_pkg.metadata.spec.external:
@ -231,7 +231,7 @@ class PackageManagerInstallMixin(object):
# move new source to the destination location # move new source to the destination location
_cleanup_dir(dst_pkg.path) _cleanup_dir(dst_pkg.path)
shutil.move(tmp_pkg.path, dst_pkg.path) shutil.move(tmp_pkg.path, dst_pkg.path)
return PackageSourceItem(dst_pkg.path) return PackageItem(dst_pkg.path)
if action == "detach-new": if action == "detach-new":
target_dirname = "%s@%s" % ( target_dirname = "%s@%s" % (
@ -248,9 +248,9 @@ class PackageManagerInstallMixin(object):
pkg_dir = os.path.join(self.package_dir, target_dirname) pkg_dir = os.path.join(self.package_dir, target_dirname)
_cleanup_dir(pkg_dir) _cleanup_dir(pkg_dir)
shutil.move(tmp_pkg.path, pkg_dir) shutil.move(tmp_pkg.path, pkg_dir)
return PackageSourceItem(pkg_dir) return PackageItem(pkg_dir)
# otherwise, overwrite existing # otherwise, overwrite existing
_cleanup_dir(dst_pkg.path) _cleanup_dir(dst_pkg.path)
shutil.move(tmp_pkg.path, dst_pkg.path) shutil.move(tmp_pkg.path, dst_pkg.path)
return PackageSourceItem(dst_pkg.path) return PackageItem(dst_pkg.path)

View File

@ -15,7 +15,7 @@
import os import os
from platformio import fs from platformio import fs
from platformio.package.meta import PackageSourceItem, PackageSpec from platformio.package.meta import PackageItem, PackageSpec
class PackageManagerLegacyMixin(object): class PackageManagerLegacyMixin(object):
@ -42,7 +42,9 @@ class PackageManagerLegacyMixin(object):
return PackageSpec(name=manifest.get("name")) return PackageSpec(name=manifest.get("name"))
def legacy_load_manifest(self, pkg): def legacy_load_manifest(self, pkg):
assert isinstance(pkg, PackageSourceItem) if not isinstance(pkg, PackageItem):
assert os.path.isdir(pkg)
pkg = PackageItem(pkg)
manifest = self.load_manifest(pkg) manifest = self.load_manifest(pkg)
manifest["__pkg_dir"] = pkg.path manifest["__pkg_dir"] = pkg.path
for key in ("name", "version"): for key in ("name", "version"):

View File

@ -19,7 +19,7 @@ import click
from platformio import fs from platformio import fs
from platformio.package.exception import UnknownPackageError from platformio.package.exception import UnknownPackageError
from platformio.package.meta import PackageSourceItem, PackageSpec from platformio.package.meta import PackageItem, PackageSpec
class PackageManagerUninstallMixin(object): class PackageManagerUninstallMixin(object):
@ -73,7 +73,7 @@ class PackageManagerUninstallMixin(object):
return pkg return pkg
def _uninstall_dependencies(self, pkg, silent=False): def _uninstall_dependencies(self, pkg, silent=False):
assert isinstance(pkg, PackageSourceItem) assert isinstance(pkg, PackageItem)
manifest = self.load_manifest(pkg) manifest = self.load_manifest(pkg)
if not manifest.get("dependencies"): if not manifest.get("dependencies"):
return return

View File

@ -18,17 +18,13 @@ import click
from platformio import util from platformio import util
from platformio.package.exception import UnknownPackageError from platformio.package.exception import UnknownPackageError
from platformio.package.meta import ( from platformio.package.meta import PackageItem, PackageOutdatedResult, PackageSpec
PackageOutdatedResult,
PackageSourceItem,
PackageSpec,
)
from platformio.package.vcsclient import VCSBaseException, VCSClientFactory from platformio.package.vcsclient import VCSBaseException, VCSClientFactory
class PackageManagerUpdateMixin(object): class PackageManagerUpdateMixin(object):
def outdated(self, pkg, spec=None): def outdated(self, pkg, spec=None):
assert isinstance(pkg, PackageSourceItem) assert isinstance(pkg, PackageItem)
assert not spec or isinstance(spec, PackageSpec) assert not spec or isinstance(spec, PackageSpec)
assert os.path.isdir(pkg.path) and pkg.metadata assert os.path.isdir(pkg.path) and pkg.metadata

View File

@ -31,8 +31,8 @@ from platformio.package.manager._uninstall import PackageManagerUninstallMixin
from platformio.package.manager._update import PackageManagerUpdateMixin from platformio.package.manager._update import PackageManagerUpdateMixin
from platformio.package.manifest.parser import ManifestParserFactory from platformio.package.manifest.parser import ManifestParserFactory
from platformio.package.meta import ( from platformio.package.meta import (
PackageItem,
PackageMetaData, PackageMetaData,
PackageSourceItem,
PackageSpec, PackageSpec,
PackageType, PackageType,
) )
@ -144,7 +144,7 @@ class BasePackageManager( # pylint: disable=too-many-public-methods
return self.get_manifest_path(pkg_dir) return self.get_manifest_path(pkg_dir)
def load_manifest(self, src): def load_manifest(self, src):
path = src.path if isinstance(src, PackageSourceItem) else src path = src.path if isinstance(src, PackageItem) else src
cache_key = "load_manifest-%s" % path cache_key = "load_manifest-%s" % path
result = self.memcache_get(cache_key) result = self.memcache_get(cache_key)
if result: if result:
@ -191,11 +191,11 @@ class BasePackageManager( # pylint: disable=too-many-public-methods
def get_installed(self): def get_installed(self):
result = [] result = []
for name in os.listdir(self.package_dir): for name in sorted(os.listdir(self.package_dir)):
pkg_dir = os.path.join(self.package_dir, name) pkg_dir = os.path.join(self.package_dir, name)
if not os.path.isdir(pkg_dir): if not os.path.isdir(pkg_dir):
continue continue
pkg = PackageSourceItem(pkg_dir) pkg = PackageItem(pkg_dir)
if not pkg.metadata: if not pkg.metadata:
try: try:
spec = self.build_legacy_spec(pkg_dir) spec = self.build_legacy_spec(pkg_dir)
@ -216,7 +216,7 @@ class BasePackageManager( # pylint: disable=too-many-public-methods
return result return result
def get_package(self, spec): def get_package(self, spec):
if isinstance(spec, PackageSourceItem): if isinstance(spec, PackageItem):
return spec return spec
spec = self.ensure_spec(spec) spec = self.ensure_spec(spec)
best = None best = None
@ -243,8 +243,9 @@ class BasePackageManager( # pylint: disable=too-many-public-methods
# external "URL" mismatch # external "URL" mismatch
if spec.external: if spec.external:
# local folder mismatch # local folder mismatch
if spec.url == pkg.path or ( if os.path.realpath(spec.url) == os.path.realpath(pkg.path) or (
spec.url.startswith("file://") and pkg.path == spec.url[7:] spec.url.startswith("file://")
and os.path.realpath(pkg.path) == os.path.realpath(spec.url[7:])
): ):
return True return True
if spec.url != pkg.metadata.spec.url: if spec.url != pkg.metadata.spec.url:

View File

@ -315,7 +315,7 @@ class PackageMetaData(object):
def __init__( # pylint: disable=redefined-builtin def __init__( # pylint: disable=redefined-builtin
self, type, name, version, spec=None self, type, name, version, spec=None
): ):
assert type in PackageType.items().values() # assert type in PackageType.items().values()
if spec: if spec:
assert isinstance(spec, PackageSpec) assert isinstance(spec, PackageSpec)
self.type = type self.type = type
@ -395,7 +395,7 @@ class PackageMetaData(object):
return PackageMetaData(**data) return PackageMetaData(**data)
class PackageSourceItem(object): class PackageItem(object):
METAFILE_NAME = ".piopm" METAFILE_NAME = ".piopm"
@ -406,7 +406,7 @@ class PackageSourceItem(object):
self.metadata = self.load_meta() self.metadata = self.load_meta()
def __repr__(self): def __repr__(self):
return "PackageSourceItem <path={path} metadata={metadata}".format( return "PackageItem <path={path} metadata={metadata}".format(
path=self.path, metadata=self.metadata path=self.path, metadata=self.metadata
) )

View File

@ -23,7 +23,7 @@ from platformio import fs
from platformio.package.exception import PackageException from platformio.package.exception import PackageException
from platformio.package.manifest.parser import ManifestFileType, ManifestParserFactory from platformio.package.manifest.parser import ManifestFileType, ManifestParserFactory
from platformio.package.manifest.schema import ManifestSchema from platformio.package.manifest.schema import ManifestSchema
from platformio.package.meta import PackageSourceItem from platformio.package.meta import PackageItem
from platformio.package.unpack import FileUnpacker from platformio.package.unpack import FileUnpacker
@ -37,7 +37,7 @@ class PackagePacker(object):
".svn/", ".svn/",
".pio/", ".pio/",
"**/.pio/", "**/.pio/",
PackageSourceItem.METAFILE_NAME, PackageItem.METAFILE_NAME,
] ]
INCLUDE_DEFAULT = ManifestFileType.items().values() INCLUDE_DEFAULT = ManifestFileType.items().values()