From dec78d29e836069841a1b63c4fb18c5417cfae34 Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Mon, 24 Nov 2014 22:24:19 +0200 Subject: [PATCH] Improve install/uninstall commands --- platformio/commands/lib.py | 34 ++++++++++++++-------------------- platformio/platforms/base.py | 2 +- platformio/util.py | 2 +- 3 files changed, 16 insertions(+), 22 deletions(-) diff --git a/platformio/commands/lib.py b/platformio/commands/lib.py index 40110320..f25db803 100644 --- a/platformio/commands/lib.py +++ b/platformio/commands/lib.py @@ -79,15 +79,12 @@ def lib_search(query, **filters): @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") -def lib_install_cli(ids, version): - lib_install(ids, version) - - -def lib_install(ids, version=None): +@click.pass_context +def lib_install(ctx, libid, version): lm = LibraryManager(get_lib_dir()) - for id_ in ids: + for id_ in libid: click.echo( "Installing library [ %s ]:" % click.style(str(id_), fg="green")) try: @@ -106,7 +103,7 @@ def lib_install(ids, version=None): _dependencies = [_dependencies] for item in _dependencies: try: - lib_install_dependency(item) + lib_install_dependency(ctx, item) except AssertionError: raise LibInstallDependencyError(str(item)) @@ -114,7 +111,7 @@ def lib_install(ids, version=None): click.secho("Already installed", fg="yellow") -def lib_install_dependency(data): +def lib_install_dependency(ctx, data): assert isinstance(data, dict) query = [] for key in data.keys(): @@ -129,18 +126,14 @@ def lib_install_dependency(data): result = get_api_result("/lib/search", dict(query=" ".join(query))) 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") -@click.argument("ids", type=click.INT, nargs=-1) -def lib_uninstall_cli(ids): - lib_uninstall(ids) - - -def lib_uninstall(ids): +@click.argument("libid", type=click.INT, nargs=-1) +def lib_uninstall(libid): lm = LibraryManager(get_lib_dir()) - for id_ in ids: + for id_ in libid: info = lm.get_info(id_) if lm.uninstall(id_): 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") -def lib_update(): +@click.pass_context +def lib_update(ctx): lm = LibraryManager(get_lib_dir()) lib_ids = [str(item['id']) for item in lm.get_installed().values()] @@ -226,8 +220,8 @@ def lib_update(): else: click.echo("[%s]" % (click.style("Out-of-date", fg="red"))) - lib_uninstall([int(id_)]) - lib_install([int(id_)]) + ctx.invoke(lib_uninstall, libid=[int(id_)]) + ctx.invoke(lib_install, libid=[int(id_)]) @cli.command("register", short_help="Register new library") diff --git a/platformio/platforms/base.py b/platformio/platforms/base.py index 20c99b01..91f782a4 100644 --- a/platformio/platforms/base.py +++ b/platformio/platforms/base.py @@ -162,7 +162,7 @@ class BasePlatform(object): pm = PackageManager() for name in self.get_packages().keys(): - if not pm.is_installed(name): + if not pm.is_installed(name) or name in deppkgs: continue pm.uninstall(name) diff --git a/platformio/util.py b/platformio/util.py index aedb86d1..66e63606 100644 --- a/platformio/util.py +++ b/platformio/util.py @@ -41,7 +41,7 @@ class AppState(object): def __exit__(self, type_, value, traceback): with open(self.path, "w") as fp: - json.dump(self._state, fp) + json.dump(self._state, fp, indent=4) def get_systype():