Merge pull request #2591 from Microsoft/serverAddExitMessage

Add an exit message for the server.
This commit is contained in:
Steve Lucco 2015-04-07 16:00:48 -07:00
commit de2e1455bb
4 changed files with 29 additions and 7 deletions

View file

@ -458,7 +458,7 @@ module ts.server {
var info = this.filenameToScriptInfo[args.file]; var info = this.filenameToScriptInfo[args.file];
if (info) { if (info) {
info.setFormatOptions(args.formatOptions); info.setFormatOptions(args.formatOptions);
this.log("Host configuration update for file " + args.file); this.log("Host configuration update for file " + args.file, "Info");
} }
} }
else { else {
@ -823,7 +823,6 @@ module ts.server {
*/ */
closeClientFile(filename: string) { closeClientFile(filename: string) {
// TODO: tsconfig check
var info = ts.lookUp(this.filenameToScriptInfo, filename); var info = ts.lookUp(this.filenameToScriptInfo, filename);
if (info) { if (info) {
this.closeOpenFile(info); this.closeOpenFile(info);
@ -856,6 +855,9 @@ module ts.server {
} }
printProjects() { printProjects() {
if (!this.psLogger.isVerbose()) {
return;
}
this.psLogger.startGroup(); this.psLogger.startGroup();
for (var i = 0, len = this.inferredProjects.length; i < len; i++) { for (var i = 0, len = this.inferredProjects.length; i < len; i++) {
var project = this.inferredProjects[i]; var project = this.inferredProjects[i];

View file

@ -405,6 +405,13 @@ declare module ts.server.protocol {
arguments: OpenRequestArgs; arguments: OpenRequestArgs;
} }
/**
* Exit request; value of command field is "exit". Ask the server process
* to exit.
*/
export interface ExitRequest extends Request {
}
/** /**
* Close request; value of command field is "close". Notify the * Close request; value of command field is "close". Notify the
* server that the client has closed a previously open file. If * server that the client has closed a previously open file. If

View file

@ -177,6 +177,12 @@ module ts.server {
super(host, logger); super(host, logger);
} }
exit() {
this.projectService.log("Exiting...","Info");
this.projectService.closeLog();
process.exit(0);
}
listen() { listen() {
rl.on('line',(input: string) => { rl.on('line',(input: string) => {
var message = input.trim(); var message = input.trim();
@ -184,9 +190,7 @@ module ts.server {
}); });
rl.on('close',() => { rl.on('close',() => {
this.projectService.log("Exiting..."); this.exit();
this.projectService.closeLog();
process.exit(0);
}); });
} }
} }

View file

@ -76,13 +76,14 @@ module ts.server {
} }
export module CommandNames { export module CommandNames {
export var Brace = "brace";
export var Change = "change"; export var Change = "change";
export var Close = "close"; export var Close = "close";
export var Completions = "completions"; export var Completions = "completions";
export var CompletionDetails = "completionEntryDetails"; export var CompletionDetails = "completionEntryDetails";
export var SignatureHelp = "signatureHelp";
export var Configure = "configure"; export var Configure = "configure";
export var Definition = "definition"; export var Definition = "definition";
export var Exit = "exit";
export var Format = "format"; export var Format = "format";
export var Formatonkey = "formatonkey"; export var Formatonkey = "formatonkey";
export var Geterr = "geterr"; export var Geterr = "geterr";
@ -94,7 +95,7 @@ module ts.server {
export var Reload = "reload"; export var Reload = "reload";
export var Rename = "rename"; export var Rename = "rename";
export var Saveto = "saveto"; export var Saveto = "saveto";
export var Brace = "brace"; export var SignatureHelp = "signatureHelp";
export var Unknown = "unknown"; export var Unknown = "unknown";
} }
@ -758,6 +759,9 @@ module ts.server {
})); }));
} }
exit() {
}
onMessage(message: string) { onMessage(message: string) {
if (this.logger.isVerbose()) { if (this.logger.isVerbose()) {
this.logger.info("request: " + message); this.logger.info("request: " + message);
@ -769,6 +773,11 @@ module ts.server {
var errorMessage: string; var errorMessage: string;
var responseRequired = true; var responseRequired = true;
switch (request.command) { switch (request.command) {
case CommandNames.Exit: {
this.exit();
responseRequired = false;
break;
}
case CommandNames.Definition: { case CommandNames.Definition: {
var defArgs = <protocol.FileLocationRequestArgs>request.arguments; var defArgs = <protocol.FileLocationRequestArgs>request.arguments;
response = this.getDefinition(defArgs.line, defArgs.offset, defArgs.file); response = this.getDefinition(defArgs.line, defArgs.offset, defArgs.file);