mirror of
https://github.com/platformio/platformio-core.git
synced 2025-07-30 01:57:13 +02:00
Improve install/uninstall commands
This commit is contained in:
@ -79,15 +79,12 @@ def lib_search(query, **filters):
|
|||||||
|
|
||||||
|
|
||||||
@cli.command("install", short_help="Install library")
|
@cli.command("install", short_help="Install library")
|
||||||
@click.argument("ids", type=click.INT, nargs=-1, metavar="[LIBRARY_ID]")
|
@click.argument("libid", type=click.INT, nargs=-1, metavar="[LIBRARY_ID]")
|
||||||
@click.option("-v", "--version")
|
@click.option("-v", "--version")
|
||||||
def lib_install_cli(ids, version):
|
@click.pass_context
|
||||||
lib_install(ids, version)
|
def lib_install(ctx, libid, version):
|
||||||
|
|
||||||
|
|
||||||
def lib_install(ids, version=None):
|
|
||||||
lm = LibraryManager(get_lib_dir())
|
lm = LibraryManager(get_lib_dir())
|
||||||
for id_ in ids:
|
for id_ in libid:
|
||||||
click.echo(
|
click.echo(
|
||||||
"Installing library [ %s ]:" % click.style(str(id_), fg="green"))
|
"Installing library [ %s ]:" % click.style(str(id_), fg="green"))
|
||||||
try:
|
try:
|
||||||
@ -106,7 +103,7 @@ def lib_install(ids, version=None):
|
|||||||
_dependencies = [_dependencies]
|
_dependencies = [_dependencies]
|
||||||
for item in _dependencies:
|
for item in _dependencies:
|
||||||
try:
|
try:
|
||||||
lib_install_dependency(item)
|
lib_install_dependency(ctx, item)
|
||||||
except AssertionError:
|
except AssertionError:
|
||||||
raise LibInstallDependencyError(str(item))
|
raise LibInstallDependencyError(str(item))
|
||||||
|
|
||||||
@ -114,7 +111,7 @@ def lib_install(ids, version=None):
|
|||||||
click.secho("Already installed", fg="yellow")
|
click.secho("Already installed", fg="yellow")
|
||||||
|
|
||||||
|
|
||||||
def lib_install_dependency(data):
|
def lib_install_dependency(ctx, data):
|
||||||
assert isinstance(data, dict)
|
assert isinstance(data, dict)
|
||||||
query = []
|
query = []
|
||||||
for key in data.keys():
|
for key in data.keys():
|
||||||
@ -129,18 +126,14 @@ def lib_install_dependency(data):
|
|||||||
|
|
||||||
result = get_api_result("/lib/search", dict(query=" ".join(query)))
|
result = get_api_result("/lib/search", dict(query=" ".join(query)))
|
||||||
assert result['total'] == 1
|
assert result['total'] == 1
|
||||||
lib_install([result['items'][0]['id']])
|
ctx.invoke(lib_install, libid=[result['items'][0]['id']])
|
||||||
|
|
||||||
|
|
||||||
@cli.command("uninstall", short_help="Uninstall libraries")
|
@cli.command("uninstall", short_help="Uninstall libraries")
|
||||||
@click.argument("ids", type=click.INT, nargs=-1)
|
@click.argument("libid", type=click.INT, nargs=-1)
|
||||||
def lib_uninstall_cli(ids):
|
def lib_uninstall(libid):
|
||||||
lib_uninstall(ids)
|
|
||||||
|
|
||||||
|
|
||||||
def lib_uninstall(ids):
|
|
||||||
lm = LibraryManager(get_lib_dir())
|
lm = LibraryManager(get_lib_dir())
|
||||||
for id_ in ids:
|
for id_ in libid:
|
||||||
info = lm.get_info(id_)
|
info = lm.get_info(id_)
|
||||||
if lm.uninstall(id_):
|
if lm.uninstall(id_):
|
||||||
click.secho("The library #%s '%s' has been successfully "
|
click.secho("The library #%s '%s' has been successfully "
|
||||||
@ -195,7 +188,8 @@ def lib_show(libid):
|
|||||||
|
|
||||||
|
|
||||||
@cli.command("update", short_help="Update installed libraries")
|
@cli.command("update", short_help="Update installed libraries")
|
||||||
def lib_update():
|
@click.pass_context
|
||||||
|
def lib_update(ctx):
|
||||||
lm = LibraryManager(get_lib_dir())
|
lm = LibraryManager(get_lib_dir())
|
||||||
|
|
||||||
lib_ids = [str(item['id']) for item in lm.get_installed().values()]
|
lib_ids = [str(item['id']) for item in lm.get_installed().values()]
|
||||||
@ -226,8 +220,8 @@ def lib_update():
|
|||||||
else:
|
else:
|
||||||
click.echo("[%s]" % (click.style("Out-of-date", fg="red")))
|
click.echo("[%s]" % (click.style("Out-of-date", fg="red")))
|
||||||
|
|
||||||
lib_uninstall([int(id_)])
|
ctx.invoke(lib_uninstall, libid=[int(id_)])
|
||||||
lib_install([int(id_)])
|
ctx.invoke(lib_install, libid=[int(id_)])
|
||||||
|
|
||||||
|
|
||||||
@cli.command("register", short_help="Register new library")
|
@cli.command("register", short_help="Register new library")
|
||||||
|
@ -162,7 +162,7 @@ class BasePlatform(object):
|
|||||||
|
|
||||||
pm = PackageManager()
|
pm = PackageManager()
|
||||||
for name in self.get_packages().keys():
|
for name in self.get_packages().keys():
|
||||||
if not pm.is_installed(name):
|
if not pm.is_installed(name) or name in deppkgs:
|
||||||
continue
|
continue
|
||||||
pm.uninstall(name)
|
pm.uninstall(name)
|
||||||
|
|
||||||
|
@ -41,7 +41,7 @@ class AppState(object):
|
|||||||
|
|
||||||
def __exit__(self, type_, value, traceback):
|
def __exit__(self, type_, value, traceback):
|
||||||
with open(self.path, "w") as fp:
|
with open(self.path, "w") as fp:
|
||||||
json.dump(self._state, fp)
|
json.dump(self._state, fp, indent=4)
|
||||||
|
|
||||||
|
|
||||||
def get_systype():
|
def get_systype():
|
||||||
|
Reference in New Issue
Block a user