diff --git a/tools/shell/src/main/java/net/corda/tools/shell/RunShellCommand.java b/tools/shell/src/main/java/net/corda/tools/shell/RunShellCommand.java index c946190c05..f6c0623ad1 100644 --- a/tools/shell/src/main/java/net/corda/tools/shell/RunShellCommand.java +++ b/tools/shell/src/main/java/net/corda/tools/shell/RunShellCommand.java @@ -36,8 +36,10 @@ public class RunShellCommand extends InteractiveShellCommand { private void emitHelp(InvocationContext context, StringToMethodCallParser parser) { // Sends data down the pipeline about what commands are available. CRaSH will render it nicely. // Each element we emit is a map of column -> content. - Map cmdsAndArgs = parser.getAvailableCommands(); - for (Map.Entry entry : cmdsAndArgs.entrySet()) { + Set> entries = parser.getAvailableCommands().entrySet(); + ArrayList> entryList = new ArrayList<>(entries); + entryList.sort(Comparator.comparing(Map.Entry::getKey)); + for (Map.Entry entry : entryList) { // Skip these entries as they aren't really interesting for the user. if (entry.getKey().equals("startFlowDynamic")) continue; if (entry.getKey().equals("getProtocolVersion")) continue;