diff --git a/src/main/java/com/beust/jcommander/DefaultUsageFormatter.java b/src/main/java/com/beust/jcommander/DefaultUsageFormatter.java index 0e9796db..99e8ef8e 100644 --- a/src/main/java/com/beust/jcommander/DefaultUsageFormatter.java +++ b/src/main/java/com/beust/jcommander/DefaultUsageFormatter.java @@ -270,18 +270,13 @@ public void appendCommands(StringBuilder out, int indentCount, int descriptionIn return; out.append(indent + " Commands:\n"); - boolean firstCommand = true; + // The magic value 3 is the number of spaces between the name of the option and its description for (Map.Entry commands : commander.getRawCommands().entrySet()) { Object arg = commands.getValue().getObjects().get(0); Parameters p = arg.getClass().getAnnotation(Parameters.class); if (p == null || !p.hidden()) { - if (!firstCommand) { - out.append("\n"); - } else { - firstCommand = false; - } JCommander.ProgramName progName = commands.getKey(); String dispName = progName.getDisplayName(); String commandDescription = Optional.ofNullable(getCommandDescription(progName.getName())) diff --git a/src/test/java/com/beust/jcommander/DefaultUsageFormatterTest.java b/src/test/java/com/beust/jcommander/DefaultUsageFormatterTest.java index 1f27e2a2..1da3c839 100644 --- a/src/test/java/com/beust/jcommander/DefaultUsageFormatterTest.java +++ b/src/test/java/com/beust/jcommander/DefaultUsageFormatterTest.java @@ -39,9 +39,15 @@ class OneCommand { @Parameter(names = {"-b", "--b", "--b-parameter"}, description = "b parameter") public int b; } + @Parameters(commandNames = "two", commandDescription = "two command") + class TwoCommand { + @Parameter(names = {"-c", "--c", "--c-parameter"}, description = "c parameter") + public int c; + } JCommander jc = JCommander.newBuilder() .addObject(new MainParameters()) .addCommand(new OneCommand()) + .addCommand(new TwoCommand()) .build(); StringBuilder output = new StringBuilder(); jc.setConsole(new OutputForwardingConsole(output)); @@ -57,6 +63,12 @@ class OneCommand { + " Options:\n" + " -b, --b, --b-parameter\n" + " b parameter\n" + + " Default: 0\n" + + " two two command\n" + + " Usage: two [options]\n" + + " Options:\n" + + " -c, --c, --c-parameter\n" + + " c parameter\n" + " Default: 0\n"; Assert.assertEquals(output.toString(), expected); } @@ -378,7 +390,6 @@ class ArgCommandB { + " Commands:\n" + " a command a\n" + " Usage: a command a parameters\n" - + "\n" + " b command b\n" + " Usage: b command b parameters\n"; Assert.assertEquals(sb.toString(), expected); diff --git a/src/test/java/com/beust/jcommander/UnixStyleUsageFormatterTest.java b/src/test/java/com/beust/jcommander/UnixStyleUsageFormatterTest.java index 2bb37840..f8fe4f20 100644 --- a/src/test/java/com/beust/jcommander/UnixStyleUsageFormatterTest.java +++ b/src/test/java/com/beust/jcommander/UnixStyleUsageFormatterTest.java @@ -335,7 +335,6 @@ class ArgCommandB { + " Commands:\n" + " a command a\n" + " Usage: a command a parameters\n" - + "\n" + " b command b\n" + " Usage: b command b parameters\n"; Assert.assertEquals(sb.toString(), expected);