# HG changeset patch # User Omair Majid # Date 1379458584 14400 # Node ID 5501717515a717479c28f27300138cd16b5e7fb5 # Parent 4afcf12749157510e2e3885178f2aef622f43dbc Make 'foo --help' work like 'help foo' Reviewed-by: jerboaa PR1091 diff -r 4afcf1274915 -r 5501717515a7 integration-tests/src/test/java/com/redhat/thermostat/itest/CliTest.java --- 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(); diff -r 4afcf1274915 -r 5501717515a7 launcher/src/main/java/com/redhat/thermostat/launcher/internal/LauncherImpl.java --- 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 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> listeners, boolean inShell) { @@ -223,6 +225,12 @@ } private void runCommand(String cmdName, String[] cmdArgs, Collection> 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) {