bugfixes and working rm command
[org.ibex.xt-crawshaw.git] / src / java / org / ibex / xt / shell / Command.java
index 0ff2952..238f8af 100644 (file)
@@ -131,7 +131,7 @@ public abstract class Command {
                 } else {
                     List l = ((Request.Key.Res)ret).keys();
                     if (l.size() == 0) {
-                        w.write("cd ");
+                        w.write("error: ");
                         w.write(c[1]);
                         w.write(": no such path\n");
                     } else {
@@ -150,8 +150,35 @@ public abstract class Command {
         public void execute(Writer w, String[] c, Env env) throws IOException {
             if (c.length == 1) { w.write(usage()); }
 
-            String[] r = new String[c.length - 1];
-            for (int i=0; i < r.length; i++) r[i] = env.path(c[i + 1]);
+            Request.Key[] r = new Request.Key[c.length - 1];
+            for (int i=0; i < r.length; i++) r[i] = new Request.RemoveKey(env.path(c[i + 1]));
+
+            Request.Response ret = env.send(new Request.Composite(r, false));
+            if (!(ret instanceof Request.Composite.Res)) {
+                w.write("error: ");
+                w.write(ret.error().getMessage());
+                w.write("\n");
+            } else {
+                Request.Response[] res = ((Request.Composite.Res)ret).responses();
+                for (int i=0; i < res.length; i++) {
+                    if (res[i] instanceof Request.RemoveKey.Res) {
+                        boolean rm = ((Request.RemoveKey.Res)res[i]).removed();
+                        if (!rm) {
+                            w.write("error: cannot remove '");
+                            w.write(c[i + 1]);
+                            w.write("': no such key\n");
+                        }
+                    } else {
+                        w.write("error: cannot remove '");
+                        w.write(c[i + 1]);
+                        w.write("': ");
+                        w.write(res[i].error().getMessage());
+                        w.write("\n");
+                    }
+                }
+            }
+
+
             // Object ret = send(new KeyRequest( FIXME: CompositeRequest
         }
     }