Skip to content

Commit 9a030a0

Browse files
committed
Address comments, improved help messages
1 parent c049c77 commit 9a030a0

File tree

3 files changed

+45
-42
lines changed

3 files changed

+45
-42
lines changed

src/main/java/software/amazon/smithy/lsp/Main.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,12 @@ public static void main(String[] args) throws Exception {
4242
}
4343

4444
private static void launch(ServerArguments serverArguments) throws Exception {
45-
if (serverArguments.getPortNumber() == ServerArguments.DEFAULT_PORT) {
46-
startServer(System.in, System.out);
47-
} else {
48-
try (var socket = new Socket("localhost", serverArguments.getPortNumber())) {
45+
if (serverArguments.useSocket()) {
46+
try (var socket = new Socket("localhost", serverArguments.port())) {
4947
startServer(socket.getInputStream(), socket.getOutputStream());
5048
}
49+
} else {
50+
startServer(System.in, System.out);
5151
}
5252
}
5353

src/main/java/software/amazon/smithy/lsp/ServerArguments.java

+32-25
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,15 @@
1818
*/
1919
final class ServerArguments implements ArgumentReceiver {
2020

21-
static final int MIN_PORT = 0;
22-
static final int MAX_PORT = 65535;
23-
static final int DEFAULT_PORT = 0; // Default value for unset port number.
24-
static final String HELP = "--help";
25-
static final String HELP_SHORT = "-h";
26-
static final String PORT_NUMBER = "--port-number";
27-
static final String PORT_NUMBER_SHORT = "-p";
28-
static final String PORT_NUMBER_POSITIONAL = "<port_number>";
29-
private int portNumber = DEFAULT_PORT;
21+
private static final int MIN_PORT = 0;
22+
private static final int MAX_PORT = 65535;
23+
private static final int DEFAULT_PORT = 0; // Default value for unset port number.
24+
private static final String HELP = "--help";
25+
private static final String HELP_SHORT = "-h";
26+
private static final String PORT = "--port";
27+
private static final String PORT_SHORT = "-p";
28+
private static final String PORT_POSITIONAL = "<port>";
29+
private int port = DEFAULT_PORT;
3030
private boolean help = false;
3131

3232

@@ -39,17 +39,20 @@ static ServerArguments create(String[] args) {
3939
serverArguments.printHelp(arguments);
4040
}
4141
if (!positional.isEmpty()) {
42-
serverArguments.portNumber = serverArguments.validatePortNumber(positional.getFirst());
42+
serverArguments.port = serverArguments.validatePortNumber(positional.getFirst());
4343
}
4444
return serverArguments;
4545
}
4646

4747
@Override
4848
public void registerHelp(HelpPrinter printer) {
4949
printer.option(HELP, HELP_SHORT, "Print this help output.");
50-
printer.param(PORT_NUMBER, PORT_NUMBER_SHORT, "PORT_NUMBER",
51-
"The port number to be used by the Smithy Language Server. Default port number is 0 if not specified.");
52-
printer.option(PORT_NUMBER_POSITIONAL, null, "Positional port-number.");
50+
printer.param(PORT, PORT_SHORT, "PORT",
51+
"The port to use for talking to the client. When not specified, or set to 0, "
52+
+ "standard in/out is used. Standard in/out is preferred, "
53+
+ "so usually this shouldn't be specified.");
54+
printer.option(PORT_POSITIONAL, null, "Deprecated: use --port instead. When not specified, or set to 0, "
55+
+ "standard in/out is used. Standard in/out is preferred, so usually this shouldn't be specified.");
5356
}
5457

5558
@Override
@@ -63,40 +66,44 @@ public boolean testOption(String name) {
6366

6467
@Override
6568
public Consumer<String> testParameter(String name) {
66-
if (name.equals(PORT_NUMBER_SHORT) || name.equals(PORT_NUMBER)) {
69+
if (name.equals(PORT_SHORT) || name.equals(PORT)) {
6770
return value -> {
68-
portNumber = validatePortNumber(value);
71+
port = validatePortNumber(value);
6972
};
7073
}
7174
return null;
7275
}
7376

74-
public int getPortNumber() {
75-
return portNumber;
77+
int port() {
78+
return port;
7679
}
7780

78-
public boolean help() {
81+
boolean help() {
7982
return help;
8083
}
8184

82-
public int validatePortNumber(String portNumberStr) {
85+
public boolean useSocket() {
86+
return port != 0;
87+
}
88+
89+
private int validatePortNumber(String portStr) {
8390
try {
84-
int portNumber = Integer.parseInt(portNumberStr);
91+
int portNumber = Integer.parseInt(portStr);
8592
if (portNumber < MIN_PORT || portNumber > MAX_PORT) {
86-
throw new CliError("Invalid port number!");
93+
throw new CliError("Invalid port number: should be an integer between "
94+
+ MIN_PORT + " and " + MAX_PORT + ", inclusive.");
8795
} else {
8896
return portNumber;
8997
}
9098
} catch (NumberFormatException e) {
91-
throw new CliError("Invalid port number!");
99+
throw new CliError("Invalid port number: Can not parse " + portStr);
92100
}
93101
}
94102

95-
96103
private void printHelp(Arguments arguments) {
97104
CliPrinter printer = CliPrinter.fromOutputStream(System.out);
98-
HelpPrinter helpPrinter = HelpPrinter.fromArguments("java -jar smithy-lsp.jar", arguments);
99-
helpPrinter.summary("Options for the Smithy Language Server:");
105+
HelpPrinter helpPrinter = HelpPrinter.fromArguments("smithy-language-server", arguments);
106+
helpPrinter.summary("Run the Smithy Language Server.");
100107
helpPrinter.print(AnsiColorFormatter.AUTO, printer);
101108
printer.flush();
102109
}

src/test/java/software/amazon/smithy/lsp/ServerArgumentsTest.java

+9-13
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public class ServerArgumentsTest {
1515
void validPositionalPortNumber() {
1616
String[] args = {"1"};
1717
ServerArguments serverArguments = ServerArguments.create(args);
18-
assertEquals(1, serverArguments.getPortNumber());
18+
assertEquals(1, serverArguments.port());
1919
}
2020

2121
@Test
@@ -34,30 +34,30 @@ void invalidFlagPortNumber() {
3434
void validFlagPortNumberShort() {
3535
String[] args = {"-p","100"};
3636
ServerArguments serverArguments = ServerArguments.create(args);
37-
assertEquals(100, serverArguments.getPortNumber());
37+
assertEquals(100, serverArguments.port());
3838
}
3939

4040
@Test
4141
void defaultPortNumber() {
4242
String[] args = {};
4343
ServerArguments serverArguments = ServerArguments.create(args);
4444

45-
assertEquals(0, serverArguments.getPortNumber());
45+
assertEquals(0, serverArguments.port());
4646
}
4747

4848
@Test
4949
void defaultPortNumberInArg() {
5050
String[] args = {"0"};
5151
ServerArguments serverArguments = ServerArguments.create(args);
5252

53-
assertEquals(0, serverArguments.getPortNumber());
53+
assertEquals(0, serverArguments.port());
5454
}
5555

5656
@Test
5757
void validFlagPortNumber() {
58-
String[] args = {"--port-number","200"};
58+
String[] args = {"--port","200"};
5959
ServerArguments serverArguments = ServerArguments.create(args);
60-
assertEquals(200, serverArguments.getPortNumber());
60+
assertEquals(200, serverArguments.port());
6161
}
6262

6363
@Test
@@ -71,16 +71,12 @@ void validHelp() {
7171

7272
String output = outContent.toString().trim();
7373

74-
assertTrue(output.contains("Options for the Smithy Language Server:"));
7574
assertTrue(output.contains("--help"));
7675
assertTrue(output.contains("-h"));
77-
assertTrue(output.contains("Print this help output."));
78-
assertTrue(output.contains("--port-number"));
76+
assertTrue(output.contains("--port"));
7977
assertTrue(output.contains("-p"));
80-
assertTrue(output.contains("PORT_NUMBER"));
81-
assertTrue(output.contains("The port number to be used by the Smithy Language Server."));
82-
assertTrue(output.contains("<port_number>"));
83-
assertTrue(output.contains("Positional port-number."));
78+
assertTrue(output.contains("PORT"));
79+
assertTrue(output.contains("<port>"));
8480

8581
} finally {
8682
// Restore original System.out

0 commit comments

Comments
 (0)