forked from platformio/platformio-core
Packaging: exclude extras from Arduino libraries
This commit is contained in:
@ -608,7 +608,7 @@ class LibraryPropertiesManifestParser(BaseManifestParser):
|
||||
return None
|
||||
|
||||
def _parse_export(self):
|
||||
result = {"exclude": ["extras", "docs", "tests", "test", "*.doxyfile", "*.pdf"]}
|
||||
result = {}
|
||||
include = None
|
||||
if self.remote_url:
|
||||
url_attrs = urlparse(self.remote_url)
|
||||
|
@ -22,7 +22,11 @@ import tempfile
|
||||
from platformio import fs
|
||||
from platformio.compat import IS_WINDOWS
|
||||
from platformio.package.exception import PackageException, UserSideException
|
||||
from platformio.package.manifest.parser import ManifestFileType, ManifestParserFactory
|
||||
from platformio.package.manifest.parser import (
|
||||
LibraryPropertiesManifestParser,
|
||||
ManifestFileType,
|
||||
ManifestParserFactory,
|
||||
)
|
||||
from platformio.package.manifest.schema import ManifestSchema
|
||||
from platformio.package.meta import PackageItem
|
||||
from platformio.package.unpack import FileUnpacker
|
||||
@ -55,6 +59,10 @@ class PackagePacker(object):
|
||||
"doc",
|
||||
"docs",
|
||||
"mkdocs",
|
||||
"doxygen",
|
||||
"*.doxyfile",
|
||||
"html",
|
||||
"media",
|
||||
"**/*.[pP][dD][fF]",
|
||||
"**/*.[dD][oO][cC]?",
|
||||
"**/*.[pP][pP][tT]?",
|
||||
@ -79,10 +87,8 @@ class PackagePacker(object):
|
||||
EXCLUDE_LIBRARY_EXTRA = [
|
||||
"assets",
|
||||
"extra",
|
||||
"extras",
|
||||
"resources",
|
||||
"html",
|
||||
"media",
|
||||
"doxygen",
|
||||
"**/build/",
|
||||
"**/*.flat",
|
||||
"**/*.[jJ][aA][rR]",
|
||||
@ -97,6 +103,7 @@ class PackagePacker(object):
|
||||
def __init__(self, package, manifest_uri=None):
|
||||
self.package = package
|
||||
self.manifest_uri = manifest_uri
|
||||
self.manifest_parser = None
|
||||
|
||||
@staticmethod
|
||||
def get_archive_name(name, version, system=None):
|
||||
@ -128,7 +135,8 @@ class PackagePacker(object):
|
||||
src = tmp_dir
|
||||
|
||||
src = self.find_source_root(src)
|
||||
manifest = self.load_manifest(src)
|
||||
self.manifest_parser = ManifestParserFactory.new_from_dir(src)
|
||||
manifest = ManifestSchema().load_manifest(self.manifest_parser.as_dict())
|
||||
filename = self.get_archive_name(
|
||||
manifest["name"],
|
||||
manifest["version"],
|
||||
@ -144,11 +152,6 @@ class PackagePacker(object):
|
||||
finally:
|
||||
shutil.rmtree(tmp_dir)
|
||||
|
||||
@staticmethod
|
||||
def load_manifest(src):
|
||||
mp = ManifestParserFactory.new_from_dir(src)
|
||||
return ManifestSchema().load_manifest(mp.as_dict())
|
||||
|
||||
def find_source_root(self, src):
|
||||
if self.manifest_uri:
|
||||
mp = (
|
||||
@ -214,7 +217,9 @@ class PackagePacker(object):
|
||||
# exclude items declared in manifest
|
||||
result += ["-<%s>" % p for p in exclude or []]
|
||||
# apply extra excludes if no custom "export" field in manifest
|
||||
if not include and not exclude:
|
||||
if (not include and not exclude) or isinstance(
|
||||
self.manifest_parser, LibraryPropertiesManifestParser
|
||||
):
|
||||
result += ["-<%s>" % p for p in exclude_extra]
|
||||
# automatically include manifests
|
||||
result += ["+<%s>" % p for p in self.INCLUDE_DEFAULT]
|
||||
|
Reference in New Issue
Block a user