diff --git a/rcargo b/rcargo index f8f5b77..5774db3 100755 --- a/rcargo +++ b/rcargo @@ -58,8 +58,18 @@ def inst_get_binary(conn, package, debug=False): print(f'installed [bold blue]{bin_name}[/bold blue] at {LOCAL_BIN_PATH}') +def list(args): + """List installed rust binaries on remote host""" + conn = Connection(args.host) + cargo_list = conn.run("cargo install --list | grep 'v.*:$'", echo=True) + # print(f"{cargo_list.stdout.strip()}") + if cargo_list.failed: + print(cargo_list.stderr) + sys.exit(ERR_CMD) + def install(args): + """Install rust packages from crates.io on remote host and copy binary to local machine.""" args.debug and print(f'{args}') print(f'{LOCAL_BIN_PATH}') @@ -70,26 +80,27 @@ def install(args): package = args.package[0] else: for arg in args.package: - print(arg) if arg.startswith('--') or arg.startswith('-'): params.append(arg) else: package = arg - if len(package) == 0: - print('no package specified') - sys.exit(ERR_CMD) - + # if len(package) == 0: + # print('no package specified') + # sys.exit(ERR_CMD) + args.debug and print(f"package {package}, params: {params}") conn = Connection(args.host) param_str = ' '.join(params) cargo_install = conn.run(f'cargo install {param_str} {package}', warn=True, echo=True) - print('{}'.format(cargo_install.stdout.strip())) + # print('{}'.format(cargo_install.stdout.strip())) + sys.exit(0) if cargo_install.failed: print(cargo_install.stderr) sys.exit(ERR_CMD) - inst_get_binary(conn, package, args.debug) + if len(package) > 0: + inst_get_binary(conn, package, args.debug) def ensure_deps(): @@ -109,7 +120,8 @@ if __name__ == '__main__': ensure_deps() default_host = os.environ.get('RCARGO_HOST', 'localhost') parser = argparse.ArgumentParser(description='remote rust cargo commands') - parser.add_argument('-H', '--host', default=default_host) + parser.add_argument('-H', '--host', default=default_host, + help="remote cargo host") parser.add_argument('-d', '--debug', action='store_true') parser.add_argument('-b', '--bin-path', default=CARGO_BIN_PATH, @@ -117,6 +129,8 @@ if __name__ == '__main__': metavar='') subparsers = parser.add_subparsers(dest='command') + list_parser = subparsers.add_parser('list', help='list installed packages on remote host') + list_parser.set_defaults(func=list) install_parser = subparsers.add_parser('install', prefix_chars="+", help='install packages from crates.io with remote build') install_parser.set_defaults(func=install)