From cc76f2bbc8a4302d27f5ed3833f5b67a3e96401f Mon Sep 17 00:00:00 2001 From: Akos Kitta Date: Tue, 21 Jul 2020 19:52:59 +0200 Subject: [PATCH] clear the output before upload/verify use the same channel for stdout and and stderr Signed-off-by: Akos Kitta --- arduino-ide-extension/package.json | 1 + .../src/browser/contributions/upload-sketch.ts | 11 ++++++++--- .../src/browser/contributions/verify-sketch.ts | 7 ++++++- .../src/node/core-service-impl.ts | 16 ++++++++-------- 4 files changed, 23 insertions(+), 12 deletions(-) diff --git a/arduino-ide-extension/package.json b/arduino-ide-extension/package.json index 0d47ea78..5b389af6 100644 --- a/arduino-ide-extension/package.json +++ b/arduino-ide-extension/package.json @@ -28,6 +28,7 @@ "@theia/navigator": "next", "@theia/outline-view": "next", "@theia/preferences": "next", + "@theia/output": "next", "@theia/search-in-workspace": "next", "@theia/terminal": "next", "@theia/workspace": "next", diff --git a/arduino-ide-extension/src/browser/contributions/upload-sketch.ts b/arduino-ide-extension/src/browser/contributions/upload-sketch.ts index 4e7f2399..1794ddc1 100644 --- a/arduino-ide-extension/src/browser/contributions/upload-sketch.ts +++ b/arduino-ide-extension/src/browser/contributions/upload-sketch.ts @@ -1,10 +1,11 @@ import { inject, injectable } from 'inversify'; +import { OutputChannelManager } from '@theia/output/lib/common/output-channel'; import { CoreService } from '../../common/protocol'; -import { MonitorConnection } from '../monitor/monitor-connection'; -import { BoardsDataStore } from '../boards/boards-data-store'; -import { BoardsServiceClientImpl } from '../boards/boards-service-client-impl'; import { ArduinoMenus } from '../menu/arduino-menus'; import { ArduinoToolbar } from '../toolbar/arduino-toolbar'; +import { BoardsDataStore } from '../boards/boards-data-store'; +import { MonitorConnection } from '../monitor/monitor-connection'; +import { BoardsServiceClientImpl } from '../boards/boards-service-client-impl'; import { SketchContribution, Command, CommandRegistry, MenuModelRegistry, KeybindingRegistry, TabBarToolbarRegistry } from './contribution'; @injectable() @@ -22,6 +23,9 @@ export class UploadSketch extends SketchContribution { @inject(BoardsServiceClientImpl) protected readonly boardsServiceClientImpl: BoardsServiceClientImpl; + @inject(OutputChannelManager) + protected readonly outputChannelManager: OutputChannelManager; + registerCommands(registry: CommandRegistry): void { registry.registerCommand(UploadSketch.Commands.UPLOAD_SKETCH, { execute: () => this.uploadSketch() @@ -78,6 +82,7 @@ export class UploadSketch extends SketchContribution { throw new Error(`No core is installed for the '${boardsConfig.selectedBoard.name}' board. Please install the core.`); } const fqbn = await this.boardsDataStore.appendConfigToFqbn(boardsConfig.selectedBoard.fqbn); + this.outputChannelManager.getChannel('Arduino: upload').clear(); await this.coreService.upload({ sketchUri: uri, fqbn, diff --git a/arduino-ide-extension/src/browser/contributions/verify-sketch.ts b/arduino-ide-extension/src/browser/contributions/verify-sketch.ts index 6251173f..e0e6f2be 100644 --- a/arduino-ide-extension/src/browser/contributions/verify-sketch.ts +++ b/arduino-ide-extension/src/browser/contributions/verify-sketch.ts @@ -1,10 +1,11 @@ import { inject, injectable } from 'inversify'; +import { OutputChannelManager } from '@theia/output/lib/common/output-channel'; +import { CoreService } from '../../common/protocol'; import { ArduinoMenus } from '../menu/arduino-menus'; import { ArduinoToolbar } from '../toolbar/arduino-toolbar'; import { BoardsDataStore } from '../boards/boards-data-store'; import { BoardsServiceClientImpl } from '../boards/boards-service-client-impl'; import { SketchContribution, Command, CommandRegistry, MenuModelRegistry, KeybindingRegistry, TabBarToolbarRegistry } from './contribution'; -import { CoreService } from '../../common/protocol'; @injectable() export class VerifySketch extends SketchContribution { @@ -18,6 +19,9 @@ export class VerifySketch extends SketchContribution { @inject(BoardsServiceClientImpl) protected readonly boardsServiceClientImpl: BoardsServiceClientImpl; + @inject(OutputChannelManager) + protected readonly outputChannelManager: OutputChannelManager; + registerCommands(registry: CommandRegistry): void { registry.registerCommand(VerifySketch.Commands.VERIFY_SKETCH, { execute: () => this.verifySketch() @@ -66,6 +70,7 @@ export class VerifySketch extends SketchContribution { throw new Error(`No core is installed for the '${boardsConfig.selectedBoard.name}' board. Please install the core.`); } const fqbn = await this.boardsDataStore.appendConfigToFqbn(boardsConfig.selectedBoard.fqbn); + this.outputChannelManager.getChannel('Arduino: compile').clear(); await this.coreService.compile({ sketchUri: uri, fqbn, diff --git a/arduino-ide-extension/src/node/core-service-impl.ts b/arduino-ide-extension/src/node/core-service-impl.ts index e777d7f9..a3a12ad7 100644 --- a/arduino-ide-extension/src/node/core-service-impl.ts +++ b/arduino-ide-extension/src/node/core-service-impl.ts @@ -35,7 +35,7 @@ export class CoreServiceImpl implements CoreService { } async compile(options: CoreService.Compile.Options): Promise { - console.log('compile', options); + this.toolOutputService.publishNewOutput('compile', 'Compiling...\n' + JSON.stringify(options, null, 2) + '\n'); const { sketchUri, fqbn } = options; const sketchFilePath = await this.fileSystem.getFsPath(sketchUri); if (!sketchFilePath) { @@ -67,21 +67,21 @@ export class CoreServiceImpl implements CoreService { await new Promise((resolve, reject) => { result.on('data', (cr: CompileResp) => { this.toolOutputService.publishNewOutput("compile", Buffer.from(cr.getOutStream_asU8()).toString()); - this.toolOutputService.publishNewOutput("compile error", Buffer.from(cr.getErrStream_asU8()).toString()); + this.toolOutputService.publishNewOutput("compile", Buffer.from(cr.getErrStream_asU8()).toString()); }); result.on('error', error => reject(error)); result.on('end', () => resolve()); }); - this.toolOutputService.publishNewOutput("compile", "Compilation complete\n"); + this.toolOutputService.publishNewOutput("compile", "Compilation complete.\n"); } catch (e) { - this.toolOutputService.publishNewOutput("compile error", `Compilation error: ${e}\n`); + this.toolOutputService.publishNewOutput("compile", `Compilation error: ${e}\n`); throw e; } } async upload(options: CoreService.Upload.Options): Promise { await this.compile(options); - console.log('upload', options); + this.toolOutputService.publishNewOutput('upload', 'Uploading...\n' + JSON.stringify(options, null, 2) + '\n'); const { sketchUri, fqbn } = options; const sketchFilePath = await this.fileSystem.getFsPath(sketchUri); if (!sketchFilePath) { @@ -111,14 +111,14 @@ export class CoreServiceImpl implements CoreService { await new Promise((resolve, reject) => { result.on('data', (cr: UploadResp) => { this.toolOutputService.publishNewOutput("upload", Buffer.from(cr.getOutStream_asU8()).toString()); - this.toolOutputService.publishNewOutput("upload error", Buffer.from(cr.getErrStream_asU8()).toString()); + this.toolOutputService.publishNewOutput("upload", Buffer.from(cr.getErrStream_asU8()).toString()); }); result.on('error', error => reject(error)); result.on('end', () => resolve()); }); - this.toolOutputService.publishNewOutput("upload", "Upload complete\n"); + this.toolOutputService.publishNewOutput("upload", "Upload complete.\n"); } catch (e) { - this.toolOutputService.publishNewOutput("upload error", `Upload error: ${e}\n`); + this.toolOutputService.publishNewOutput("upload", `Upload error: ${e}\n`); throw e; } }