forked from platformio/platformio-core
Switch to Click meta context for lib CLI
This commit is contained in:
@ -32,6 +32,8 @@ try:
|
|||||||
except ImportError:
|
except ImportError:
|
||||||
from urllib import quote
|
from urllib import quote
|
||||||
|
|
||||||
|
CTX_META_STORAGE_DIRS_KEY = __name__ + ".storage_dirs"
|
||||||
|
|
||||||
|
|
||||||
@click.group(short_help="Library Manager")
|
@click.group(short_help="Library Manager")
|
||||||
@click.option(
|
@click.option(
|
||||||
@ -82,7 +84,8 @@ def cli(ctx, **options):
|
|||||||
raise exception.NotGlobalLibDir(get_project_dir(),
|
raise exception.NotGlobalLibDir(get_project_dir(),
|
||||||
join(util.get_home_dir(), "lib"),
|
join(util.get_home_dir(), "lib"),
|
||||||
ctx.invoked_subcommand)
|
ctx.invoked_subcommand)
|
||||||
ctx.obj = []
|
|
||||||
|
ctx.meta[CTX_META_STORAGE_DIRS_KEY] = []
|
||||||
for storage_dir in storage_dirs:
|
for storage_dir in storage_dirs:
|
||||||
if is_platformio_project(storage_dir):
|
if is_platformio_project(storage_dir):
|
||||||
with util.cd(storage_dir):
|
with util.cd(storage_dir):
|
||||||
@ -93,9 +96,10 @@ def cli(ctx, **options):
|
|||||||
for env in config.envs():
|
for env in config.envs():
|
||||||
if (not options['environment']
|
if (not options['environment']
|
||||||
or env in options['environment']):
|
or env in options['environment']):
|
||||||
ctx.obj.append(join(libdeps_dir, env))
|
ctx.meta[CTX_META_STORAGE_DIRS_KEY].append(
|
||||||
|
join(libdeps_dir, env))
|
||||||
else:
|
else:
|
||||||
ctx.obj.append(storage_dir)
|
ctx.meta[CTX_META_STORAGE_DIRS_KEY].append(storage_dir)
|
||||||
|
|
||||||
|
|
||||||
@cli.command("install", short_help="Install library")
|
@cli.command("install", short_help="Install library")
|
||||||
@ -116,8 +120,9 @@ def cli(ctx, **options):
|
|||||||
"--force",
|
"--force",
|
||||||
is_flag=True,
|
is_flag=True,
|
||||||
help="Reinstall/redownload library if exists")
|
help="Reinstall/redownload library if exists")
|
||||||
@click.pass_obj
|
@click.pass_context
|
||||||
def lib_install(storage_dirs, libraries, silent, interactive, force):
|
def lib_install(ctx, libraries, silent, interactive, force):
|
||||||
|
storage_dirs = ctx.meta[CTX_META_STORAGE_DIRS_KEY]
|
||||||
for storage_dir in storage_dirs:
|
for storage_dir in storage_dirs:
|
||||||
print_storage_header(storage_dirs, storage_dir)
|
print_storage_header(storage_dirs, storage_dir)
|
||||||
lm = LibraryManager(storage_dir)
|
lm = LibraryManager(storage_dir)
|
||||||
@ -128,8 +133,9 @@ def lib_install(storage_dirs, libraries, silent, interactive, force):
|
|||||||
|
|
||||||
@cli.command("uninstall", short_help="Uninstall libraries")
|
@cli.command("uninstall", short_help="Uninstall libraries")
|
||||||
@click.argument("libraries", nargs=-1, metavar="[LIBRARY...]")
|
@click.argument("libraries", nargs=-1, metavar="[LIBRARY...]")
|
||||||
@click.pass_obj
|
@click.pass_context
|
||||||
def lib_uninstall(storage_dirs, libraries):
|
def lib_uninstall(ctx, libraries):
|
||||||
|
storage_dirs = ctx.meta[CTX_META_STORAGE_DIRS_KEY]
|
||||||
for storage_dir in storage_dirs:
|
for storage_dir in storage_dirs:
|
||||||
print_storage_header(storage_dirs, storage_dir)
|
print_storage_header(storage_dirs, storage_dir)
|
||||||
lm = LibraryManager(storage_dir)
|
lm = LibraryManager(storage_dir)
|
||||||
@ -149,8 +155,9 @@ def lib_uninstall(storage_dirs, libraries):
|
|||||||
is_flag=True,
|
is_flag=True,
|
||||||
help="Do not update, only check for the new versions")
|
help="Do not update, only check for the new versions")
|
||||||
@click.option("--json-output", is_flag=True)
|
@click.option("--json-output", is_flag=True)
|
||||||
@click.pass_obj
|
@click.pass_context
|
||||||
def lib_update(storage_dirs, libraries, only_check, dry_run, json_output):
|
def lib_update(ctx, libraries, only_check, dry_run, json_output):
|
||||||
|
storage_dirs = ctx.meta[CTX_META_STORAGE_DIRS_KEY]
|
||||||
only_check = dry_run or only_check
|
only_check = dry_run or only_check
|
||||||
json_result = {}
|
json_result = {}
|
||||||
for storage_dir in storage_dirs:
|
for storage_dir in storage_dirs:
|
||||||
@ -196,8 +203,9 @@ def lib_update(storage_dirs, libraries, only_check, dry_run, json_output):
|
|||||||
|
|
||||||
@cli.command("list", short_help="List installed libraries")
|
@cli.command("list", short_help="List installed libraries")
|
||||||
@click.option("--json-output", is_flag=True)
|
@click.option("--json-output", is_flag=True)
|
||||||
@click.pass_obj
|
@click.pass_context
|
||||||
def lib_list(storage_dirs, json_output):
|
def lib_list(ctx, json_output):
|
||||||
|
storage_dirs = ctx.meta[CTX_META_STORAGE_DIRS_KEY]
|
||||||
json_result = {}
|
json_result = {}
|
||||||
for storage_dir in storage_dirs:
|
for storage_dir in storage_dirs:
|
||||||
if not json_output:
|
if not json_output:
|
||||||
|
@ -20,6 +20,7 @@ import click
|
|||||||
|
|
||||||
from platformio import exception, telemetry, util
|
from platformio import exception, telemetry, util
|
||||||
from platformio.commands.device import device_monitor as cmd_device_monitor
|
from platformio.commands.device import device_monitor as cmd_device_monitor
|
||||||
|
from platformio.commands.lib import CTX_META_STORAGE_DIRS_KEY
|
||||||
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.platform import \
|
from platformio.commands.platform import \
|
||||||
platform_install as cmd_platform_install
|
platform_install as cmd_platform_install
|
||||||
@ -272,7 +273,9 @@ def _handle_legacy_libdeps(project_dir, config):
|
|||||||
def _autoinstall_libdeps(ctx, envname, libraries, verbose=False):
|
def _autoinstall_libdeps(ctx, envname, libraries, verbose=False):
|
||||||
if not libraries:
|
if not libraries:
|
||||||
return
|
return
|
||||||
ctx.obj = [join(get_projectlibdeps_dir(), envname)]
|
ctx.meta[CTX_META_STORAGE_DIRS_KEY] = [
|
||||||
|
join(get_projectlibdeps_dir(), envname)
|
||||||
|
]
|
||||||
for lib in libraries:
|
for lib in libraries:
|
||||||
try:
|
try:
|
||||||
ctx.invoke(cmd_lib_install, libraries=[lib], silent=not verbose)
|
ctx.invoke(cmd_lib_install, libraries=[lib], silent=not verbose)
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
import click
|
import click
|
||||||
|
|
||||||
from platformio import app
|
from platformio import app
|
||||||
|
from platformio.commands.lib import CTX_META_STORAGE_DIRS_KEY
|
||||||
from platformio.commands.lib import lib_update as cmd_lib_update
|
from platformio.commands.lib import lib_update as cmd_lib_update
|
||||||
from platformio.commands.platform import platform_update as cmd_platform_update
|
from platformio.commands.platform import platform_update as cmd_platform_update
|
||||||
from platformio.managers.core import update_core_packages
|
from platformio.managers.core import update_core_packages
|
||||||
@ -54,5 +55,5 @@ def cli(ctx, core_packages, only_check, dry_run):
|
|||||||
click.echo()
|
click.echo()
|
||||||
click.echo("Library Manager")
|
click.echo("Library Manager")
|
||||||
click.echo("===============")
|
click.echo("===============")
|
||||||
ctx.obj = [LibraryManager().package_dir]
|
ctx.meta[CTX_META_STORAGE_DIRS_KEY] = [LibraryManager().package_dir]
|
||||||
ctx.invoke(cmd_lib_update, only_check=only_check)
|
ctx.invoke(cmd_lib_update, only_check=only_check)
|
||||||
|
@ -23,6 +23,7 @@ import semantic_version
|
|||||||
|
|
||||||
from platformio import __version__, app, exception, telemetry, util
|
from platformio import __version__, app, exception, telemetry, util
|
||||||
from platformio.commands import PlatformioCLI
|
from platformio.commands import PlatformioCLI
|
||||||
|
from platformio.commands.lib import CTX_META_STORAGE_DIRS_KEY
|
||||||
from platformio.commands.lib import lib_update as cmd_lib_update
|
from platformio.commands.lib import lib_update as cmd_lib_update
|
||||||
from platformio.commands.platform import \
|
from platformio.commands.platform import \
|
||||||
platform_install as cmd_platform_install
|
platform_install as cmd_platform_install
|
||||||
@ -332,7 +333,7 @@ def check_internal_updates(ctx, what):
|
|||||||
if what == "platforms":
|
if what == "platforms":
|
||||||
ctx.invoke(cmd_platform_update, platforms=outdated_items)
|
ctx.invoke(cmd_platform_update, platforms=outdated_items)
|
||||||
elif what == "libraries":
|
elif what == "libraries":
|
||||||
ctx.obj = [pm.package_dir]
|
ctx.meta[CTX_META_STORAGE_DIRS_KEY] = [pm.package_dir]
|
||||||
ctx.invoke(cmd_lib_update, libraries=outdated_items)
|
ctx.invoke(cmd_lib_update, libraries=outdated_items)
|
||||||
click.echo()
|
click.echo()
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user