in src/main/java/com/googlesource/gerrit/plugins/verifystatus/VerifyStatusQueryShell.java [133:214]
private void readEvalPrintLoop() {
final StringBuilder buffer = new StringBuilder();
boolean executed = false;
for (; ; ) {
if (outputFormat == OutputFormat.PRETTY) {
print(buffer.length() == 0 || executed ? "gerrit> " : " -> ");
}
String line = readLine();
if (line == null) {
return;
}
if (line.startsWith("\\")) {
// Shell command, check the various cases we recognize
//
line = line.substring(1);
if (line.equals("h") || line.equals("?")) {
showHelp();
} else if (line.equals("q")) {
if (outputFormat == OutputFormat.PRETTY) {
println("Bye");
}
return;
} else if (line.equals("r")) {
buffer.setLength(0);
executed = false;
} else if (line.equals("p")) {
println(buffer.toString());
} else if (line.equals("g")) {
if (buffer.length() > 0) {
executeStatement(buffer.toString());
executed = true;
}
} else if (line.equals("d")) {
listTables();
} else if (line.startsWith("d ")) {
showTable(line.substring(2).trim());
} else {
final String msg = "'\\" + line + "' not supported";
switch (outputFormat) {
case JSON_SINGLE:
case JSON:
{
final JsonObject err = new JsonObject();
err.addProperty("type", "error");
err.addProperty("message", msg);
println(err.toString());
break;
}
case PRETTY:
default:
println("ERROR: " + msg);
println("");
showHelp();
break;
}
}
continue;
}
if (executed) {
buffer.setLength(0);
executed = false;
}
if (buffer.length() > 0) {
buffer.append('\n');
}
buffer.append(line);
if (buffer.length() > 0 && buffer.charAt(buffer.length() - 1) == ';') {
executeStatement(buffer.toString());
executed = true;
}
}
}