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/07 15:26:47 UTC
svn commit: r993350 - in /karaf/trunk:
shell/console/src/main/java/org/apache/felix/gogo/commands/basic/DefaultActionPreparator.java
tooling/cmdhelp-maven-plugin/src/main/java/org/apache/karaf/tooling/cmdhelp/CmdHelpMojo.java
Author: gnodet
Date: Tue Sep 7 13:26:47 2010
New Revision: 993350
URL: http://svn.apache.org/viewvc?rev=993350&view=rev
Log:
KARAF-155: print default (non trivial) values for arguments and options when showing the help for a command
Modified:
karaf/trunk/shell/console/src/main/java/org/apache/felix/gogo/commands/basic/DefaultActionPreparator.java
karaf/trunk/tooling/cmdhelp-maven-plugin/src/main/java/org/apache/karaf/tooling/cmdhelp/CmdHelpMojo.java
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=993350&r1=993349&r2=993350&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 Tue Sep 7 13:26:47 2010
@@ -135,7 +135,7 @@ public class DefaultActionPreparator imp
Object param = it.next();
// Check for help
if (HELP.name().equals(param) || Arrays.asList(HELP.aliases()).contains(param)) {
- printUsage(session, action.getClass().getAnnotation(Command.class), options.keySet(), arguments.keySet(), System.out);
+ printUsage(session, action, options, arguments, System.out);
return false;
}
if (processOptions && param instanceof String && ((String) param).startsWith("-")) {
@@ -226,16 +226,17 @@ public class DefaultActionPreparator imp
return true;
}
- protected void printUsage(CommandSession session, Command command, Set<Option> options, Set<Argument> args, PrintStream out)
+ protected void printUsage(CommandSession session, Action action, Map<Option,Field> optionsMap, Map<Argument,Field> argsMap, PrintStream out)
{
+ Command command = action.getClass().getAnnotation(Command.class);
Terminal term = (Terminal) session.get(".jline.terminal");
- List<Argument> arguments = new ArrayList<Argument>(args);
+ List<Argument> arguments = new ArrayList<Argument>(argsMap.keySet());
Collections.sort(arguments, new Comparator<Argument>() {
public int compare(Argument o1, Argument o2) {
return Integer.valueOf(o1.index()).compareTo(Integer.valueOf(o2.index()));
}
});
- options = new HashSet<Option>(options);
+ Set<Option> options = new HashSet<Option>(optionsMap.keySet());
options.add(HELP);
if (command != null && (command.description() != null || command.name() != null))
{
@@ -286,6 +287,21 @@ public class DefaultActionPreparator imp
out.print(" ");
out.println(Ansi.ansi().a(Ansi.Attribute.INTENSITY_BOLD).a(argument.name()).a(Ansi.Attribute.RESET));
printFormatted(" ", argument.description(), term != null ? term.getTerminalWidth() : 80, out);
+ if (!argument.required()) {
+ try {
+ argsMap.get(argument).setAccessible(true);
+ Object o = argsMap.get(argument).get(action);
+ if (o != null
+ && (!(o instanceof Boolean) || ((Boolean) o))
+ && (!(o instanceof Number) || ((Number) o).doubleValue() != 0.0)) {
+ out.print(" (defaults to ");
+ out.print(o.toString());
+ out.println(")");
+ }
+ } catch (Throwable t) {
+ // Ignore
+ }
+ }
}
out.println();
}
@@ -302,6 +318,19 @@ public class DefaultActionPreparator imp
out.print(" ");
out.println(Ansi.ansi().a(Ansi.Attribute.INTENSITY_BOLD).a(opt).a(Ansi.Attribute.RESET));
printFormatted(" ", option.description(), term != null ? term.getTerminalWidth() : 80, out);
+ try {
+ optionsMap.get(option).setAccessible(true);
+ Object o = optionsMap.get(option).get(action);
+ if (o != null
+ && (!(o instanceof Boolean) || ((Boolean) o))
+ && (!(o instanceof Number) || ((Number) o).doubleValue() != 0.0)) {
+ out.print(" (defaults to ");
+ out.print(o.toString());
+ out.println(")");
+ }
+ } catch (Throwable t) {
+ // Ignore
+ }
}
out.println();
}
Modified: karaf/trunk/tooling/cmdhelp-maven-plugin/src/main/java/org/apache/karaf/tooling/cmdhelp/CmdHelpMojo.java
URL: http://svn.apache.org/viewvc/karaf/trunk/tooling/cmdhelp-maven-plugin/src/main/java/org/apache/karaf/tooling/cmdhelp/CmdHelpMojo.java?rev=993350&r1=993349&r2=993350&view=diff
==============================================================================
--- karaf/trunk/tooling/cmdhelp-maven-plugin/src/main/java/org/apache/karaf/tooling/cmdhelp/CmdHelpMojo.java (original)
+++ karaf/trunk/tooling/cmdhelp-maven-plugin/src/main/java/org/apache/karaf/tooling/cmdhelp/CmdHelpMojo.java Tue Sep 7 13:26:47 2010
@@ -24,6 +24,7 @@ import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.io.PrintStream;
import java.io.Writer;
+import java.lang.reflect.Field;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.ArrayList;
@@ -206,15 +207,16 @@ public class CmdHelpMojo extends Abstrac
protected class DocbxPreparator extends BlueprintActionPreparator {
@Override
- protected void printUsage(CommandSession session, Command command, Set<Option> options, Set<Argument> args, PrintStream out)
+ protected void printUsage(CommandSession session, Action action, Map<Option,Field> optionsMap, Map<Argument,Field> argsMap, PrintStream out)
{
- List<Argument> arguments = new ArrayList<Argument>(args);
+ Command command = action.getClass().getAnnotation(Command.class);
+ List<Argument> arguments = new ArrayList<Argument>(argsMap.keySet());
Collections.sort(arguments, new Comparator<Argument>() {
public int compare(Argument o1, Argument o2) {
return Integer.valueOf(o1.index()).compareTo(Integer.valueOf(o2.index()));
}
});
- options = new HashSet<Option>(options);
+ Set<Option> options = new HashSet<Option>(optionsMap.keySet());
options.add(HELP);
out.println("<section>");
@@ -294,15 +296,16 @@ public class CmdHelpMojo extends Abstrac
protected class ConfPreparator extends BlueprintActionPreparator {
@Override
- protected void printUsage(CommandSession session, Command command, Set<Option> options, Set<Argument> args, PrintStream out)
+ protected void printUsage(CommandSession session, Action action, Map<Option, Field> optionsMap, Map<Argument,Field> argsMap, PrintStream out)
{
- List<Argument> arguments = new ArrayList<Argument>(args);
+ Command command = action.getClass().getAnnotation(Command.class);
+ List<Argument> arguments = new ArrayList<Argument>(argsMap.keySet());
Collections.sort(arguments, new Comparator<Argument>() {
public int compare(Argument o1, Argument o2) {
return Integer.valueOf(o1.index()).compareTo(Integer.valueOf(o2.index()));
}
});
- options = new HashSet<Option>(options);
+ Set<Option> options = new HashSet<Option>(optionsMap.keySet());
options.add(HELP);
out.println("h1. " + command.scope() + ":" + command.name());
@@ -332,7 +335,21 @@ public class CmdHelpMojo extends Abstrac
out.println("h2. Arguments");
for (Argument argument : arguments)
{
- out.println("| " + argument.name() + " | " + argument.description() + " |");
+ String description = argument.description();
+ if (!argument.required()) {
+ try {
+ argsMap.get(argument).setAccessible(true);
+ Object o = argsMap.get(argument).get(action);
+ if (o != null
+ && (!(o instanceof Boolean) || ((Boolean) o))
+ && (!(o instanceof Number) || ((Number) o).doubleValue() != 0.0)) {
+ description += " (defaults to " + o.toString() + ")";
+ }
+ } catch (Throwable t) {
+ // Ignore
+ }
+ }
+ out.println("| " + argument.name() + " | " + description + " |");
}
out.println();
}
@@ -342,11 +359,23 @@ public class CmdHelpMojo extends Abstrac
for (Option option : options)
{
String opt = option.name();
+ String desc = option.description();
for (String alias : option.aliases())
{
opt += ", " + alias;
}
- out.println("| " + opt + " | " + option.description() + " |");
+ try {
+ optionsMap.get(option).setAccessible(true);
+ Object o = optionsMap.get(option).get(action);
+ if (o != null
+ && (!(o instanceof Boolean) || ((Boolean) o))
+ && (!(o instanceof Number) || ((Number) o).doubleValue() != 0.0)) {
+ desc += " (defaults to " + o.toString() + ")";
+ }
+ } catch (Throwable t) {
+ // Ignore
+ }
+ out.println("| " + opt + " | " + desc + " |");
}
out.println();
}