changeset 1253:5501717515a7

Make 'foo --help' work like 'help foo' Reviewed-by: jerboaa PR1091
author Omair Majid <omajid@redhat.com>
date Tue, 17 Sep 2013 18:56:24 -0400
parents 4afcf1274915
children 789a3be5013e
files integration-tests/src/test/java/com/redhat/thermostat/itest/CliTest.java launcher/src/main/java/com/redhat/thermostat/launcher/internal/LauncherImpl.java
diffstat 2 files changed, 25 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/integration-tests/src/test/java/com/redhat/thermostat/itest/CliTest.java	Fri Sep 06 10:51:16 2013 +0200
+++ b/integration-tests/src/test/java/com/redhat/thermostat/itest/CliTest.java	Tue Sep 17 18:56:24 2013 -0400
@@ -181,6 +181,21 @@
     }
 
     @Test
+    public void testShellHelpArgument() throws Exception {
+        Spawn shell = spawnThermostat("shell", "--help");
+        shell.expectClose();
+
+        String stdOut = shell.getCurrentStandardOutContents();
+
+        String[] lines = stdOut.split("\n");
+        String usage = lines[0];
+        assertTrue(usage.matches("^usage: thermostat shell$"));
+        String description = lines[1];
+        assertTrue(description.matches("^\\s+launches the Thermostat interactive shell$"));
+        assertTrue(lines[3].matches("thermostat shell"));
+    }
+
+    @Test
     public void testShellUnrecognizedArgument() throws Exception {
         Spawn shell = spawnThermostat("shell", "--foo");
         shell.expectClose();
--- a/launcher/src/main/java/com/redhat/thermostat/launcher/internal/LauncherImpl.java	Fri Sep 06 10:51:16 2013 +0200
+++ b/launcher/src/main/java/com/redhat/thermostat/launcher/internal/LauncherImpl.java	Tue Sep 17 18:56:24 2013 -0400
@@ -83,6 +83,8 @@
  */
 public class LauncherImpl implements Launcher {
 
+    private static final String HELP_COMMAND_NAME = "help";
+
     private static final Translate<LocaleResources> t = LocaleResources.createLocalizer();
     private Logger logger;
 
@@ -211,11 +213,11 @@
     }
 
     private void runHelpCommand() {
-        runCommand("help", new String[0], null, false);
+        runCommand(HELP_COMMAND_NAME, new String[0], null, false);
     }
 
     private void runHelpCommandFor(String cmdName) {
-        runCommand("help", new String[] { "--", cmdName }, null, false);
+        runCommand(HELP_COMMAND_NAME, new String[] { "--", cmdName }, null, false);
     }
 
     private void runCommandFromArguments(String[] args, Collection<ActionListener<ApplicationState>> listeners, boolean inShell) {
@@ -223,6 +225,12 @@
     }
 
     private void runCommand(String cmdName, String[] cmdArgs, Collection<ActionListener<ApplicationState>> listeners, boolean inShell) {
+        // treat 'foo --help' as 'help foo'
+        if (!cmdName.equals(HELP_COMMAND_NAME) && Arrays.asList(cmdArgs).contains("--help")) {
+            runCommand(HELP_COMMAND_NAME, new String[] { cmdName } , listeners, inShell);
+            return;
+        }
+
         try {
             parseArgsAndRunCommand(cmdName, cmdArgs, listeners, inShell);
         } catch (CommandException e) {