FELIX-2074: Bring back the history command
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@910220 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/karaf/shell/commands/src/main/java/org/apache/felix/karaf/shell/commands/HistoryAction.java b/karaf/shell/commands/src/main/java/org/apache/felix/karaf/shell/commands/HistoryAction.java
index 39e3110..ee5884b 100644
--- a/karaf/shell/commands/src/main/java/org/apache/felix/karaf/shell/commands/HistoryAction.java
+++ b/karaf/shell/commands/src/main/java/org/apache/felix/karaf/shell/commands/HistoryAction.java
@@ -16,8 +16,35 @@
*/
package org.apache.felix.karaf.shell.commands;
+import java.util.List;
+
+import jline.History;
+import org.apache.felix.gogo.commands.Command;
+import org.apache.felix.karaf.shell.console.OsgiCommandSupport;
+import org.fusesource.jansi.Ansi;
+
/**
- * TODO
+ * History command
*/
-public class HistoryAction {
+@Command(scope = "shell", name="history", description="Prints command history")
+public class HistoryAction extends OsgiCommandSupport {
+
+ @Override
+ protected Object doExecute() throws Exception {
+ History history = (History) session.get(".jline.history");
+ List<String> elements = history.getHistoryList();
+
+ int i = 0;
+ for (String element : elements) {
+ System.out.println(
+ Ansi.ansi()
+ .a(" ")
+ .a(Ansi.Attribute.INTENSITY_BOLD).render("%3d", i).a(Ansi.Attribute.INTENSITY_BOLD_OFF)
+ .a(" ")
+ .a(element)
+ .toString());
+ i++;
+ }
+ return null;
+ }
}
diff --git a/karaf/shell/commands/src/main/resources/OSGI-INF/blueprint/shell-commands.xml b/karaf/shell/commands/src/main/resources/OSGI-INF/blueprint/shell-commands.xml
index 88aea17..ec7e7c1 100644
--- a/karaf/shell/commands/src/main/resources/OSGI-INF/blueprint/shell-commands.xml
+++ b/karaf/shell/commands/src/main/resources/OSGI-INF/blueprint/shell-commands.xml
@@ -35,11 +35,9 @@
<command name="shell/grep">
<action class="org.apache.felix.karaf.shell.commands.GrepAction"/>
</command>
- <!--
<command name="shell/history">
<action class="org.apache.felix.karaf.shell.commands.HistoryAction"/>
</command>
- -->
<command name="shell/if">
<action class="org.apache.felix.karaf.shell.commands.IfAction"/>
</command>
diff --git a/karaf/shell/console/src/main/java/org/apache/felix/karaf/shell/console/jline/Console.java b/karaf/shell/console/src/main/java/org/apache/felix/karaf/shell/console/jline/Console.java
index 903c2f8..c8a7752 100644
--- a/karaf/shell/console/src/main/java/org/apache/felix/karaf/shell/console/jline/Console.java
+++ b/karaf/shell/console/src/main/java/org/apache/felix/karaf/shell/console/jline/Console.java
@@ -102,6 +102,7 @@
File file = new File(System.getProperty("user.home"), ".karaf/karaf.history");
file.getParentFile().mkdirs();
reader.getHistory().setHistoryFile(file);
+ session.put(".jline.history", reader.getHistory());
if (completer != null) {
reader.addCompletor(
new CompleterAsCompletor(