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

View File

@ -22,6 +22,7 @@ import click
from platformio import __version__, exception, telemetry, util from platformio import __version__, exception, telemetry, util
from platformio.commands.lib import lib_install as cmd_lib_install from platformio.commands.lib import lib_install as cmd_lib_install
from platformio.commands.lib import get_builtin_libs
from platformio.commands.platform import \ from platformio.commands.platform import \
platform_install as cmd_platform_install platform_install as cmd_platform_install
from platformio.managers.lib import LibraryManager from platformio.managers.lib import LibraryManager
@ -279,7 +280,15 @@ def _autoinstall_libdeps(ctx, libraries, verbose=False):
try: try:
ctx.invoke(cmd_lib_install, libraries=[lib], silent=not verbose) ctx.invoke(cmd_lib_install, libraries=[lib], silent=not verbose)
except exception.LibNotFound as e: 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): def _clean_pioenvs_dir(pioenvs_dir):

View File

@ -544,15 +544,26 @@ class PlatformBase(PlatformPackagesMixin, PlatformRunMixin):
def get_lib_storages(self): def get_lib_storages(self):
storages = [] storages = []
for _, opts in (self.frameworks or {}).items(): for opts in (self.frameworks or {}).values():
if "package" not in opts: if "package" not in opts:
continue continue
pkg_dir = self.get_package_dir(opts['package']) pkg_dir = self.get_package_dir(opts['package'])
if not pkg_dir or not isdir(join(pkg_dir, "libraries")): if not pkg_dir or not isdir(join(pkg_dir, "libraries")):
continue continue
storages.append( libs_dir = join(pkg_dir, "libraries")
dict( storages.append({"name": opts['package'], "path": libs_dir})
name=opts['package'], path=join(pkg_dir, "libraries"))) 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 return storages