You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by gn...@apache.org on 2010/09/09 12:15:54 UTC
svn commit: r995370 - in /karaf/trunk/shell:
commands/src/main/java/org/apache/karaf/shell/commands/
commands/src/main/resources/org/ commands/src/main/resources/org/apache/
commands/src/main/resources/org/apache/karaf/
commands/src/main/resources/org/...
Author: gnodet
Date: Thu Sep 9 10:15:53 2010
New Revision: 995370
URL: http://svn.apache.org/viewvc?rev=995370&view=rev
Log:
KARAF-193: it should be possible to load a Command description from a text file
Added:
karaf/trunk/shell/commands/src/main/resources/org/
karaf/trunk/shell/commands/src/main/resources/org/apache/
karaf/trunk/shell/commands/src/main/resources/org/apache/karaf/
karaf/trunk/shell/commands/src/main/resources/org/apache/karaf/shell/
karaf/trunk/shell/commands/src/main/resources/org/apache/karaf/shell/commands/
karaf/trunk/shell/commands/src/main/resources/org/apache/karaf/shell/commands/grep.txt
Modified:
karaf/trunk/shell/commands/src/main/java/org/apache/karaf/shell/commands/GrepAction.java
karaf/trunk/shell/console/src/main/java/org/apache/felix/gogo/commands/Command.java
karaf/trunk/shell/console/src/main/java/org/apache/felix/gogo/commands/basic/DefaultActionPreparator.java
Modified: karaf/trunk/shell/commands/src/main/java/org/apache/karaf/shell/commands/GrepAction.java
URL: http://svn.apache.org/viewvc/karaf/trunk/shell/commands/src/main/java/org/apache/karaf/shell/commands/GrepAction.java?rev=995370&r1=995369&r2=995370&view=diff
==============================================================================
--- karaf/trunk/shell/commands/src/main/java/org/apache/karaf/shell/commands/GrepAction.java (original)
+++ karaf/trunk/shell/commands/src/main/java/org/apache/karaf/shell/commands/GrepAction.java Thu Sep 9 10:15:53 2010
@@ -34,7 +34,7 @@ import org.apache.felix.gogo.commands.Co
import org.fusesource.jansi.Ansi;
-@Command(scope = "shell", name="grep", description="Prints lines matching the given pattern")
+@Command(scope = "shell", name="grep", description="Prints lines matching the given pattern", detailedDescription="classpath:grep.txt")
public class GrepAction extends AbstractAction {
public static enum ColorOption {
Added: karaf/trunk/shell/commands/src/main/resources/org/apache/karaf/shell/commands/grep.txt
URL: http://svn.apache.org/viewvc/karaf/trunk/shell/commands/src/main/resources/org/apache/karaf/shell/commands/grep.txt?rev=995370&view=auto
==============================================================================
--- karaf/trunk/shell/commands/src/main/resources/org/apache/karaf/shell/commands/grep.txt (added)
+++ karaf/trunk/shell/commands/src/main/resources/org/apache/karaf/shell/commands/grep.txt Thu Sep 9 10:15:53 2010
@@ -0,0 +1 @@
+Grep uses Java regular expressions for pattern matching. For more informations, see http://download.oracle.com/javase/1.5.0/docs/api/java/util/regex/Pattern.html
Modified: karaf/trunk/shell/console/src/main/java/org/apache/felix/gogo/commands/Command.java
URL: http://svn.apache.org/viewvc/karaf/trunk/shell/console/src/main/java/org/apache/felix/gogo/commands/Command.java?rev=995370&r1=995369&r2=995370&view=diff
==============================================================================
--- karaf/trunk/shell/console/src/main/java/org/apache/felix/gogo/commands/Command.java (original)
+++ karaf/trunk/shell/console/src/main/java/org/apache/felix/gogo/commands/Command.java Thu Sep 9 10:15:53 2010
@@ -45,4 +45,9 @@ public @interface Command
* Returns the description of the command which is used to generate command line help
*/
String description() default "";
+
+ /**
+ * Returns a detailed description of the command
+ */
+ String detailedDescription() default "";
}
Modified: karaf/trunk/shell/console/src/main/java/org/apache/felix/gogo/commands/basic/DefaultActionPreparator.java
URL: http://svn.apache.org/viewvc/karaf/trunk/shell/console/src/main/java/org/apache/felix/gogo/commands/basic/DefaultActionPreparator.java?rev=995370&r1=995369&r2=995370&view=diff
==============================================================================
--- karaf/trunk/shell/console/src/main/java/org/apache/felix/gogo/commands/basic/DefaultActionPreparator.java (original)
+++ karaf/trunk/shell/console/src/main/java/org/apache/felix/gogo/commands/basic/DefaultActionPreparator.java Thu Sep 9 10:15:53 2010
@@ -18,9 +18,15 @@
*/
package org.apache.felix.gogo.commands.basic;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.io.StringWriter;
import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
import java.lang.reflect.Type;
+import java.net.URL;
import java.util.*;
import java.io.PrintStream;
import java.util.regex.Matcher;
@@ -476,6 +482,42 @@ public class DefaultActionPreparator imp
}
out.println();
}
+ if (command.detailedDescription().length() > 0) {
+ out.println(Ansi.ansi().a(Ansi.Attribute.INTENSITY_BOLD).a("DETAILS").a(Ansi.Attribute.RESET));
+ String desc = loadDescription(action.getClass(), command.detailedDescription());
+ printFormatted(" ", desc, term != null ? term.getTerminalWidth() : 80, out);
+ }
+ }
+
+ private String loadDescription(Class clazz, String desc) {
+ if (desc.startsWith("classpath:")) {
+ InputStream is = clazz.getResourceAsStream(desc.substring("classpath:".length()));
+ if (is == null) {
+ is = clazz.getClassLoader().getResourceAsStream(desc.substring("classpath:".length()));
+ }
+ if (is == null) {
+ desc = "Unable to load description from " + desc;
+ } else {
+ try {
+ Reader r = new InputStreamReader(is);
+ StringWriter sw = new StringWriter();
+ int c;
+ while ((c = r.read()) != -1) {
+ sw.append((char) c);
+ }
+ desc = sw.toString();
+ } catch (IOException e) {
+ desc = "Unable to load description from " + desc;
+ } finally {
+ try {
+ is.close();
+ } catch (IOException e) {
+ // Ignore
+ }
+ }
+ }
+ }
+ return desc;
}
// TODO move this to a helper class?