Add settings to control when to open the build output

Signed-off-by: Sheng Chen <sheche@microsoft.com>
This commit is contained in:
Sheng Chen 2023-08-28 13:11:07 +08:00
Родитель 65938f203f
Коммит e448d4703b
3 изменённых файлов: 38 добавлений и 1 удалений

Просмотреть файл

@ -837,6 +837,21 @@
],
"markdownDescription": "[Experimental] Use build server to synchronize Gradle project when enabled. When set to `auto`, the build server will be enabled in Visual Studio Code - Insiders.",
"default": "auto"
},
"java.gradle.buildServer.openBuildOutput": {
"type": "string",
"enum": [
"neverOpen",
"openOnBuildStart",
"openOnBuildFailure"
],
"enumDescriptions": [
"Never automatically open build output.",
"Open the build output when the build starts.",
"Open the build output when the build fails."
],
"default": "openOnBuildFailure",
"description": "Controls when the build output should open."
}
}
},

Просмотреть файл

@ -1,6 +1,7 @@
import { Disposable, ExtensionContext, OutputChannel, commands, languages, window } from "vscode";
import { GradleBuildLinkProvider } from "./GradleBuildLinkProvider";
import { sendInfo } from "vscode-extension-telemetry-wrapper";
import { OpenBuildOutputValue, getOpenBuildOutput } from "../util/config";
const APPEND_BUILD_LOG_CMD = "_java.gradle.buildServer.appendBuildLog";
const LOG_CMD = "_java.gradle.buildServer.log";
@ -23,7 +24,16 @@ export class BuildServerController implements Disposable {
commands.registerCommand(APPEND_BUILD_LOG_CMD, (msg: string) => {
if (msg) {
this.buildOutputChannel.appendLine(msg);
if (/^BUILD (SUCCESSFUL|FAILED)/m.test(msg)) {
const openBehavior: OpenBuildOutputValue = getOpenBuildOutput();
if (openBehavior === OpenBuildOutputValue.NEVER) {
return;
}
const pattern =
openBehavior === OpenBuildOutputValue.ON_BUILD_START
? /^> Build starts at /m
: /^BUILD FAILED/m;
if (pattern.test(msg)) {
this.buildOutputChannel.show(true);
}
}

Просмотреть файл

@ -114,6 +114,18 @@ export function getAllowParallelRun(): boolean {
return vscode.workspace.getConfiguration("gradle").get<boolean>("allowParallelRun", false);
}
export function getOpenBuildOutput(): OpenBuildOutputValue {
return vscode.workspace
.getConfiguration("java.gradle.buildServer")
.get<OpenBuildOutputValue>("openBuildOutput", OpenBuildOutputValue.ON_BUILD_FAILURE);
}
export enum OpenBuildOutputValue {
NEVER = "neverOpen",
ON_BUILD_START = "openOnBuildStart",
ON_BUILD_FAILURE = "openOnBuildFailure",
}
export enum ProjectOpenBehaviourValue {
INTERACTIVE = "Interactive",
OPEN = "Open",