From a72bd9818f518ba6cb990863d0efb7b23a3fb72b Mon Sep 17 00:00:00 2001 From: Paul Code Johnston Date: Fri, 16 Oct 2020 11:15:08 -0600 Subject: [PATCH 1/4] Add shutdown command --- package.json | 16 ++++++++++++++-- src/bzl/bzlclient.ts | 6 +++++- src/bzl/constants.ts | 1 + src/bzl/view/server.ts | 8 ++++++++ 4 files changed, 28 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index c6103812..ddaf35b4 100644 --- a/package.json +++ b/package.json @@ -56,6 +56,7 @@ "onCommand:bsv.bzl.server.explore", "onCommand:bsv.bzl.server.refresh", "onCommand:bsv.bzl.server.restart", + "onCommand:bsv.bzl.server.shutdown", "onCommand:bsv.bzl.server.select", "onCommand:bsv.bzl.signup.start", "onCommand:bsv.bzl.workspace.explore", @@ -516,6 +517,12 @@ "title": "Restart this server", "icon": "$(debug-restart)" }, + { + "category": "Bzl", + "command": "bsv.bzl.server.shutdown", + "title": "Shutdown this server", + "icon": "$(debug-stop)" + }, { "category": "Bzl", "command": "bsv.bzl.server.select", @@ -763,15 +770,20 @@ "group": "inline@0" }, { - "command": "bsv.bzl.server.select", + "command": "bsv.bzl.server.shutdown", "when": "view == bsv.bzl.server && viewItem == server", "group": "inline@1" }, { - "command": "bsv.bzl.server.explore", + "command": "bsv.bzl.server.select", "when": "view == bsv.bzl.server && viewItem == server", "group": "inline@2" }, + { + "command": "bsv.bzl.server.explore", + "when": "view == bsv.bzl.server && viewItem == server", + "group": "inline@3" + }, { "command": "bsv.bzl.server.copyFlag", "when": "view == bsv.bzl.server && viewItem == metadata", diff --git a/src/bzl/bzlclient.ts b/src/bzl/bzlclient.ts index 992ac302..eeb48575 100644 --- a/src/bzl/bzlclient.ts +++ b/src/bzl/bzlclient.ts @@ -186,9 +186,13 @@ export class BzlClient extends GRPCClient implements BzlCodesearch { } async restart(): Promise { + return this.shutdown(true); + } + + async shutdown(restart: boolean = false): Promise { return new Promise((resolve, reject) => { this.app.Shutdown( - { restart: true }, + { restart: restart }, new grpc.Metadata(), { deadline: this.getDeadline() }, (err?: grpc.ServiceError, resp?: ShutdownResponse) => { diff --git a/src/bzl/constants.ts b/src/bzl/constants.ts index 05ee012c..a1f2af73 100644 --- a/src/bzl/constants.ts +++ b/src/bzl/constants.ts @@ -86,6 +86,7 @@ export enum CommandName { ServerResultExplore = 'bsv.bzl.server.bes_results.explore', ServerAddServer = 'bsv.bzl.server.add', ServerRestart = 'bsv.bzl.server.restart', + ServerShutdown = 'bsv.bzl.server.shutdown', ServerSelect = 'bsv.bzl.server.select', ServerExplore = 'bsv.bzl.server.explore', diff --git a/src/bzl/view/server.ts b/src/bzl/view/server.ts index 7e1a6905..c44851bd 100644 --- a/src/bzl/view/server.ts +++ b/src/bzl/view/server.ts @@ -35,6 +35,7 @@ export class BzlServerView extends BzlClientTreeDataProvider { this.addCommand(CommandName.ServerResultExplore, this.handleCommandResultsExplore); this.addCommand(CommandName.ServerAddServer, this.handleCommandAddServer); this.addCommand(CommandName.ServerRestart, this.handleCommandRestart); + this.addCommand(CommandName.ServerShutdown, this.handleCommandShutdown); this.addCommand(CommandName.ServerSelect, this.handleCommandSelect); this.addCommand(CommandName.ServerExplore, this.handleCommandExplore); } @@ -58,6 +59,13 @@ export class BzlServerView extends BzlClientTreeDataProvider { return node.client.restart(); } + async handleCommandShutdown(node: ServerNode): Promise { + if (!node || !node.client) { + return; + } + return node.client.shutdown(); + } + async handleCommandSelect(node: ServerNode): Promise { if (node && node.client === this.client) { return; From 50427a2869f225f45f3a73c28ff5a8c74028591c Mon Sep 17 00:00:00 2001 From: Paul Code Johnston Date: Fri, 16 Oct 2020 11:20:32 -0600 Subject: [PATCH 2/4] Display server tool path --- src/bzl/bzlclient.ts | 1 + src/bzl/feature.ts | 2 +- src/bzl/view/server.ts | 14 ++++++++++---- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/bzl/bzlclient.ts b/src/bzl/bzlclient.ts index eeb48575..bee5ab54 100644 --- a/src/bzl/bzlclient.ts +++ b/src/bzl/bzlclient.ts @@ -113,6 +113,7 @@ export class BzlClient extends GRPCClient implements BzlCodesearch { public isRemoteClient: boolean = false; constructor( + public readonly executable: string, readonly bzlProtos: BzlProtoGrpcType, readonly codesearchProtos: CodesearchProtoGrpcType, readonly address: string, diff --git a/src/bzl/feature.ts b/src/bzl/feature.ts index b6040a71..acdb3a59 100644 --- a/src/bzl/feature.ts +++ b/src/bzl/feature.ts @@ -74,7 +74,7 @@ export class BzlFeature implements IExtensionFeature, vscode.Disposable { const bzlProto = loadBzlProtos(cfg.server.protofile); const codesearchProto = loadCodesearchProtos(cfg.codesearch.codesearchProtofile); - this.client = this.add(new BzlClient(bzlProto, codesearchProto, cfg.server.address, onDidRequestRestart)); + this.client = this.add(new BzlClient(cfg.server.executable, bzlProto, codesearchProto, cfg.server.address, onDidRequestRestart)); const commandRunner = this.add(new BzlServerCommandRunner( cfg.commandTask, diff --git a/src/bzl/view/server.ts b/src/bzl/view/server.ts index c44851bd..da9b6ca5 100644 --- a/src/bzl/view/server.ts +++ b/src/bzl/view/server.ts @@ -109,7 +109,7 @@ export class BzlServerView extends BzlClientTreeDataProvider { } } - const client = new BzlClient(this.bzlProto, this.codesearchProto, address); + const client = new BzlClient('' /* executable not known */, this.bzlProto, this.codesearchProto, address); client.isRemoteClient = true; const node = await this.createServerNode(client); @@ -211,9 +211,13 @@ export class ServerNode extends Node { const grpcScheme = md.grpcAddress?.endsWith(':443') ? 'grpcs' : 'grpc'; const httpBaseURL = `${httpScheme}://${md.httpAddress}`; const grpcBaseURL = `${grpcScheme}://${md.grpcAddress}`; - return this.children = [ + this.children = [ new MetadataNode('Version', `"${md.version!}"`, 'Release version', 'verified'), - new MetadataNode('Build Date', dt.toISODate()!, 'Build date'), + ]; + if (this.client.executable) { + this.children.push(new MetadataNode('Tool Path', this.client.executable, 'Tool executable path')); + } + this.children.push(new MetadataNode('Build Date', dt.toISODate()!, 'Build date'), new MetadataNode('Build Commit', md.commitId!, 'Build Commit'), new MetadataNode('Runtime', `${md.os!}_${md.arch!}`, 'Runtime OS/Architecture'), new MetadataNode('Base Dir', md.baseDir!, 'Base directory for cached files'), @@ -222,7 +226,9 @@ export class ServerNode extends Node { new MetadataNode('--bes_backend', `grpc://${this.client.address}`, 'BES backend address', 'pulse'), new MetadataNode('--bes_results_url', `http://${this.client.address}/stream`, 'BES results URL prefix', 'pulse'), // new MetadataNode('Report Issue', 'https://github.com/stackb/bazel-stack-vscode/issues', 'Issue URL', 'bug', true), - ]; + ); + + return this.children; } } From 025cd4faeb0940893cbfa1050bcb32cf58cbffd1 Mon Sep 17 00:00:00 2001 From: Paul Johnston Date: Mon, 19 Jul 2021 20:19:52 +0000 Subject: [PATCH 3/4] Skip quote escape on windows --- package-lock.json | 3 ++- package.json | 6 ++++-- src/bezel/status.ts | 10 +++++++++- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index cfb481b9..227d7207 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "bazel-stack-vscode", - "version": "1.0.1", + "version": "1.1.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -365,6 +365,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@types/find-up/-/find-up-4.0.0.tgz", "integrity": "sha512-QlRNKeOPFWKisbNtKVOOGXw3AeLbkw8UmT/EyEGM6brfqpYffKBcch7f1y40NYN9O90aK2+K0xBMDJfOAsg2qg==", + "dev": true, "requires": { "find-up": "*" } diff --git a/package.json b/package.json index 5b7ba523..9f56db4c 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "bazel-stack-vscode", "displayName": "bazel-stack-vscode", "description": "Bazel Support for Visual Studio Code", - "version": "1.1.0", + "version": "1.1.1", "publisher": "StackBuild", "license": "Apache-2.0", "icon": "stackb-full.png", @@ -26,6 +26,8 @@ "onUri", "onCommand:bsv.openExtensionSetting", "onCommand:workbench.view.extension.bazel-explorer", + "onView:bsv.workspace", + "onView:bazel-explorer", "onLanguage:bazel", "onLanguage:bazelrc", "onLanguage:starlark" @@ -660,4 +662,4 @@ "tabWidth": 2, "arrowParens": "avoid" } -} \ No newline at end of file +} diff --git a/src/bezel/status.ts b/src/bezel/status.ts index 00a4a68c..383edeb9 100644 --- a/src/bezel/status.ts +++ b/src/bezel/status.ts @@ -1,3 +1,4 @@ +import * as os from 'os'; import * as vscode from 'vscode'; import { ComponentConfiguration } from './configuration'; import { quote } from 'shell-quote'; @@ -291,7 +292,14 @@ export abstract class LaunchableComponent< const terminal = vscode.window.createTerminal(this.terminalName); this.terminal = terminal; - terminal.sendText(quote(args), true); + // terminal.sendText(quote(args), true); + let command = ''; + if (os.platform() === 'win32') { + command = args.join(' '); + } else { + command = quote(args); + } + terminal.sendText(command, true); terminal.show(); this.setStatus(Status.LAUNCHING); From 6dc4751b5a9f716f74c8b28aff4cc1a275d109d8 Mon Sep 17 00:00:00 2001 From: Paul Johnston Date: Mon, 19 Jul 2021 14:23:57 -0600 Subject: [PATCH 4/4] Cleanup commented code --- src/bezel/status.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/bezel/status.ts b/src/bezel/status.ts index 383edeb9..44565d57 100644 --- a/src/bezel/status.ts +++ b/src/bezel/status.ts @@ -292,7 +292,6 @@ export abstract class LaunchableComponent< const terminal = vscode.window.createTerminal(this.terminalName); this.terminal = terminal; - // terminal.sendText(quote(args), true); let command = ''; if (os.platform() === 'win32') { command = args.join(' ');