Don’t warn about known built-in libraries while building a project

This commit is contained in:
Ivan Kravets
2017-01-28 15:48:36 +02:00
parent 4d566b81d1
commit a4d8749e44
3 changed files with 35 additions and 12 deletions

View File

@ -244,14 +244,10 @@ def lib_list(lm, json_output):
print_lib_item(item)
@cli.command("builtin", short_help="List built-in libraries")
@click.option("--storage", multiple=True)
@click.option("--json-output", is_flag=True)
@click.pass_obj
def lib_builtin(lm, storage, json_output):
@util.memoized
def get_builtin_libs(storage_names=None):
items = []
storage_names = storage or []
del storage
storage_names = storage_names or []
pm = PlatformManager()
for manifest in pm.get_installed():
p = PlatformFactory.newPlatform(
@ -261,7 +257,14 @@ def lib_builtin(lm, storage, json_output):
continue
lm = LibraryManager(storage['path'])
items.append(dict(name=storage['name'], items=lm.get_installed()))
return items
@cli.command("builtin", short_help="List built-in libraries")
@click.option("--storage", multiple=True)
@click.option("--json-output", is_flag=True)
def lib_builtin(storage, json_output):
items = get_builtin_libs(storage)
if json_output:
return click.echo(json.dumps(items))

View File

@ -22,6 +22,7 @@ import click
from platformio import __version__, exception, telemetry, util
from platformio.commands.lib import lib_install as cmd_lib_install
from platformio.commands.lib import get_builtin_libs
from platformio.commands.platform import \
platform_install as cmd_platform_install
from platformio.managers.lib import LibraryManager
@ -279,7 +280,15 @@ def _autoinstall_libdeps(ctx, libraries, verbose=False):
try:
ctx.invoke(cmd_lib_install, libraries=[lib], silent=not verbose)
except exception.LibNotFound as e:
click.secho("Warning! %s" % e, fg="yellow")
if not _is_builtin_lib(lib):
click.secho("Warning! %s" % e, fg="yellow")
def _is_builtin_lib(lib_name):
for storage in get_builtin_libs():
if any([l.get("name") == lib_name for l in storage['items']]):
return True
return False
def _clean_pioenvs_dir(pioenvs_dir):

View File

@ -544,15 +544,26 @@ class PlatformBase(PlatformPackagesMixin, PlatformRunMixin):
def get_lib_storages(self):
storages = []
for _, opts in (self.frameworks or {}).items():
for opts in (self.frameworks or {}).values():
if "package" not in opts:
continue
pkg_dir = self.get_package_dir(opts['package'])
if not pkg_dir or not isdir(join(pkg_dir, "libraries")):
continue
storages.append(
dict(
name=opts['package'], path=join(pkg_dir, "libraries")))
libs_dir = join(pkg_dir, "libraries")
storages.append({"name": opts['package'], "path": libs_dir})
libcores_dir = join(libs_dir, "__cores__")
if not isdir(libcores_dir):
continue
for item in os.listdir(libcores_dir):
libcore_dir = join(libcores_dir, item)
if not isdir(libcore_dir):
continue
storages.append({
"name": "%s-%s" % (opts['package'], item),
"path": libcore_dir
})
return storages