Improve install/uninstall commands

This commit is contained in:
Ivan Kravets
2014-11-24 22:24:19 +02:00
parent 102175215c
commit dec78d29e8
3 changed files with 16 additions and 22 deletions

View File

@ -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")

View File

@ -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)

View File

@ -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():