Make help more friendly over SSH
`ssh -p 29418 localhost help` and `ssh -p 29418 localhost gerrit help`
are now more user friendly by displaying commands the user can invoke
from within this context.
Bug: issue 296
Change-Id: I62c32855cf50ff65ee225d8e5e2c14e4badcb4af
Signed-off-by: Shawn O. Pearce <sop@google.com>
diff --git a/src/main/java/com/google/gerrit/server/ssh/DispatchCommand.java b/src/main/java/com/google/gerrit/server/ssh/DispatchCommand.java
index 6abc3a3..aac3d5f 100644
--- a/src/main/java/com/google/gerrit/server/ssh/DispatchCommand.java
+++ b/src/main/java/com/google/gerrit/server/ssh/DispatchCommand.java
@@ -65,6 +65,11 @@
args = "";
}
+ if (name.equals("help") || name.equals("--help") || name.equals("-h")) {
+ usage();
+ return;
+ }
+
final Provider<Command> p = commands.get(name);
if (p != null) {
final Command cmd = p.get();
@@ -98,15 +103,26 @@
private void usage() throws IOException, UnsupportedEncodingException {
final StringBuilder usage = new StringBuilder();
- usage.append("usage: " + prefix + " COMMAND [ARGS]\n");
+ if (prefix.indexOf(' ') < 0) {
+ usage.append("usage: " + prefix + " COMMAND [ARGS]\n");
+ }
usage.append("\n");
usage.append("Available commands of " + prefix + " are:\n");
+ usage.append("\n");
for (Map.Entry<String, Provider<Command>> e : commands.entrySet()) {
usage.append(" ");
usage.append(e.getKey());
usage.append("\n");
}
usage.append("\n");
+
+ usage.append("See '");
+ if (prefix.indexOf(' ') < 0) {
+ usage.append(prefix);
+ usage.append(' ');
+ }
+ usage.append("COMMAND --help' for more information.\n");
+ usage.append("\n");
err.write(usage.toString().getBytes("UTF-8"));
err.flush();
onExit(1);