From 47c71c65de6c6eeb23438499a03c08b930fd7cbe Mon Sep 17 00:00:00 2001 From: ivanovit Date: Tue, 8 May 2018 12:06:12 +0300 Subject: [PATCH] Stop debugger after TypeScript compile error --- src/debug-adapter/webKitDebugAdapter.ts | 3 +++ src/project/androidProject.ts | 4 +++- src/project/iosProject.ts | 4 +++- src/project/project.ts | 8 ++++++++ 4 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/debug-adapter/webKitDebugAdapter.ts b/src/debug-adapter/webKitDebugAdapter.ts index b2972c7..932bf6a 100644 --- a/src/debug-adapter/webKitDebugAdapter.ts +++ b/src/debug-adapter/webKitDebugAdapter.ts @@ -169,6 +169,9 @@ export class WebKitDebugAdapter implements DebugProtocol.IDebugAdapter { if (cliCommand.tnsProcess) { this._tnsProcess = cliCommand.tnsProcess; + cliCommand.tnsOutputEventEmitter.on("tsCompilationError", () => { + this.fireEvent(new TerminatedEvent()); + }); cliCommand.tnsProcess.stdout.on('data', data => { Services.logger().log(data.toString(), Tags.FrontendMessage); }); cliCommand.tnsProcess.stderr.on('data', data => { Services.logger().error(data.toString(), Tags.FrontendMessage); }); cliCommand.tnsProcess.on('close', (code, signal) => { diff --git a/src/project/androidProject.ts b/src/project/androidProject.ts index e839389..c18ac37 100644 --- a/src/project/androidProject.ts +++ b/src/project/androidProject.ts @@ -40,7 +40,9 @@ export class AndroidProject extends Project { return { tnsProcess: debugProcess, tnsOutputEventEmitter: tnsOutputEventEmitter }; } - private configureReadyEvent(readableStream: stream.Readable, eventEmitter: EventEmitter, attach: boolean): void { + protected configureReadyEvent(readableStream: stream.Readable, eventEmitter: EventEmitter, attach?: boolean): void { + super.configureReadyEvent(readableStream, eventEmitter); + let debugPort = null; new scanner.StringMatchingScanner(readableStream).onEveryMatch(new RegExp("device: .* debug port: [0-9]+"), (match: scanner.MatchFound) => { //device: {device-name} debug port: {debug-port} diff --git a/src/project/iosProject.ts b/src/project/iosProject.ts index 94dd500..b37ea39 100644 --- a/src/project/iosProject.ts +++ b/src/project/iosProject.ts @@ -44,7 +44,9 @@ export class IosProject extends Project { return { tnsProcess: debugProcess, tnsOutputEventEmitter: tnsOutputEventEmitter }; } - private configureReadyEvent(readableStream: stream.Readable, eventEmitter: EventEmitter): void { + protected configureReadyEvent(readableStream: stream.Readable, eventEmitter: EventEmitter): void { + super.configureReadyEvent(readableStream, eventEmitter); + let socketPathPrefix = 'socket-file-location: '; let streamScanner = new scanner.StringMatchingScanner(readableStream); streamScanner.onEveryMatch(new RegExp(socketPathPrefix + '.*\.sock'), (match: scanner.MatchFound) => { diff --git a/src/project/project.ts b/src/project/project.ts index 3d36184..4783ec5 100644 --- a/src/project/project.ts +++ b/src/project/project.ts @@ -2,6 +2,8 @@ import {ChildProcess} from 'child_process'; import {EventEmitter} from 'events'; import {Version} from '../common/version'; import {NativeScriptCli} from './nativeScriptCli'; +import * as stream from 'stream'; +import * as scanner from './streamScanner'; export type DebugResult = { tnsProcess: ChildProcess, tnsOutputEventEmitter: EventEmitter }; @@ -28,6 +30,12 @@ export abstract class Project { public abstract debug(options: { stopOnEntry: boolean, watch: boolean }, tnsArgs?: string[]): DebugResult; + protected configureReadyEvent(readableStream: stream.Readable, eventEmitter: EventEmitter): void { + new scanner.StringMatchingScanner(readableStream).onEveryMatch("TypeScript compiler failed", () => { + eventEmitter.emit('tsCompilationError'); + }); + } + protected executeRunCommand(args: string[]): ChildProcess { return this.cli.execute(["run", this.platformName()].concat(args), this._appRoot); }