You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by ha...@apache.org on 2012/06/15 23:23:34 UTC

svn commit: r1350807 - /hive/trunk/cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java

Author: hashutosh
Date: Fri Jun 15 21:23:33 2012
New Revision: 1350807

URL: http://svn.apache.org/viewvc?rev=1350807&view=rev
Log:
HIVE-2796 [jira] Support auto completion for hive configs in CliDriver
(Navis Ryu via Ashutosh Chauhan)

Summary:
DPAL-747 Support auto completion for hive configs in CliDriver

It's very cumbersome to memorize hive conf vars.

Test Plan: EMPTY

Reviewers: JIRA, ashutoshc

Reviewed By: ashutoshc

Differential Revision: https://reviews.facebook.net/D1689

Modified:
    hive/trunk/cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java

Modified: hive/trunk/cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java
URL: http://svn.apache.org/viewvc/hive/trunk/cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java?rev=1350807&r1=1350806&r2=1350807&view=diff
==============================================================================
--- hive/trunk/cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java (original)
+++ hive/trunk/cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java Fri Jun 15 21:23:33 2012
@@ -512,7 +512,7 @@ public class CliDriver {
     }
   }
 
-  public static Completor getCommandCompletor () {
+  public static Completor[] getCommandCompletor () {
     // SimpleCompletor matches against a pre-defined wordlist
     // We start with an empty wordlist and build it up
     SimpleCompletor sc = new SimpleCompletor(new String[0]);
@@ -575,7 +575,32 @@ public class CliDriver {
       }
     };
 
-    return completor;
+    HiveConf.ConfVars[] confs = HiveConf.ConfVars.values();
+    String[] vars = new String[confs.length];
+    for (int i = 0; i < vars.length; i++) {
+      vars[i] = confs[i].varname;
+    }
+    SimpleCompletor conf = new SimpleCompletor(vars);
+    conf.setDelimiter(".");
+
+    SimpleCompletor set = new SimpleCompletor("set") {
+      @Override
+      public int complete(String buffer, int cursor, List clist) {
+        return buffer != null && buffer.equals("set") ? super.complete(buffer, cursor, clist) : -1;
+      }
+    };
+    ArgumentCompletor propCompletor = new ArgumentCompletor(new Completor[]{set, conf}) {
+      @Override
+      @SuppressWarnings("unchecked")
+      public int complete(String buffer, int offset, List completions) {
+        int ret = super.complete(buffer, offset, completions);
+        if (completions.size() == 1) {
+          completions.set(0, ((String)completions.get(0)).trim());
+        }
+        return ret;
+      }
+    };
+    return new Completor[] {propCompletor, completor};
   }
 
   public static void main(String[] args) throws Exception {
@@ -682,7 +707,9 @@ public class CliDriver {
     ConsoleReader reader = new ConsoleReader();
     reader.setBellEnabled(false);
     // reader.setDebug(new PrintWriter(new FileWriter("writer.debug", true)));
-    reader.addCompletor(getCommandCompletor());
+    for (Completor completor : getCommandCompletor()) {
+      reader.addCompletor(completor);
+    }
 
     String line;
     final String HISTORYFILE = ".hivehistory";