From 20c564dc12d100914c6aac0b8184e9d54f376f3f Mon Sep 17 00:00:00 2001
From: Jo?o Duarte <jvsDuarte08@gmail.com>
Date: Wed, 17 Jul 2019 09:03:15 -0700
Subject: prosodyctl: Improved the 'remove' command

---
 prosodyctl | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)

(limited to 'prosodyctl')

diff --git a/prosodyctl b/prosodyctl
index a1dd1614..af1fea54 100755
--- a/prosodyctl
+++ b/prosodyctl
@@ -147,10 +147,20 @@ function commands.remove(arg)
     show_usage([[make]], [[Removes a module installed in the wroking directory's plugins folder]]);
     return 1
   end
-  print("Removing "..arg[1].." from ./plugins")
-  os.execute("luarocks --tree='./plugins' remove "..arg[1])
-  print("Done!")
-  return 0
+  local flag = "--tree="
+  -- I'm considering the flag is the first, but there can be many flags
+  if arg[1] and arg[1]:sub(1, #flag) == flag then
+    local dir = arg[1]:match("=(.+)$")
+    print("Removing module "..arg[2].." at "..dir..", from luarocks repo")
+    -- These extra double brackets allow us to correctly process names with spaces
+    os.execute("luarocks remove --tree='"..dir.."' "..arg[2])
+    return 0;
+  else
+    print("Removing "..arg[1].." from ./plugins")
+    os.execute("luarocks --tree='"..prosody.paths.plugins.."' remove "..arg[1])
+    print("Done!")
+    return 0
+  end
 end
 
 function commands.install(arg)
-- 
cgit v1.2.3