From 135f3fa72af68fd33ddd330515e95386f43f5e2f Mon Sep 17 00:00:00 2001 From: =?utf8?q?Alexis=20Laferri=C3=A8re?= Date: Mon, 5 Mar 2018 10:54:50 -0500 Subject: [PATCH] nitpm: uninstall accepts many packages and can be forced MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Alexis Laferrière --- src/nitpm.nit | 49 ++++++++++++++++++++++++++++--------------------- 1 file changed, 28 insertions(+), 21 deletions(-) diff --git a/src/nitpm.nit b/src/nitpm.nit index d61db8f..12fc960 100644 --- a/src/nitpm.nit +++ b/src/nitpm.nit @@ -247,39 +247,46 @@ class CommandUninstall super Command redef fun name do return "uninstall" - redef fun usage do return "nitpm uninstall " - redef fun description do return "Uninstall a package" + redef fun usage do return "nitpm uninstall [-f] [=version] [package1 ...]" + redef fun description do return "Uninstall packages" redef fun apply(args) do - if args.length != 1 then + var opt_force = "-f" + var force = args.has(opt_force) + if force then args.remove(opt_force) + + if args.is_empty then print_local_help exit 1 end - var name = args.first - var target_dir = nitpm_lib_dir / name + for name in args do + var target_dir = nitpm_lib_dir / name - if not target_dir.file_exists or not target_dir.to_path.is_dir then - print_error "Package not found" - exit 1 - end + if not target_dir.file_exists or not target_dir.to_path.is_dir then + print_error "Package not found" + exit 1 + end - # Ask confirmation - var response = prompt("Delete {target_dir.escape_to_sh}? [Y/n] ") - var accept = response != null and - (response.to_lower == "y" or response.to_lower == "yes" or response == "") - if not accept then return + # Ask confirmation + if not force then + var response = prompt("Delete {target_dir.escape_to_sh}? [Y/n] ") + var accept = response != null and + (response.to_lower == "y" or response.to_lower == "yes" or response == "") + if not accept then return + end - var cmd = "rm -rf {target_dir.escape_to_sh}" - if verbose then print "+ {cmd}" + var cmd = "rm -rf {target_dir.escape_to_sh}" + if verbose then print "+ {cmd}" - var proc = new Process("sh", "-c", cmd) - proc.wait + var proc = new Process("sh", "-c", cmd) + proc.wait - if proc.status != 0 then - print_error "Uninstall failed" - exit 1 + if proc.status != 0 then + print_error "Uninstall failed" + exit 1 + end end end end -- 1.7.9.5