Fix error when Git extension is disabled

This commit is contained in:
Koen Vlaswinkel
2023-11-16 14:31:48 +01:00
parent a04f70e162
commit 704894471b

View File

@@ -9,22 +9,33 @@ import { ValueResult } from "../common/value-result";
// Based on https://github.com/microsoft/sarif-vscode-extension/blob/a1740e766122c1759d9f39d580c18b82d9e0dea4/src/extension/index.activateGithubAnalyses.ts
async function getGitExtensionAPI(): Promise<GitExtensionAPI | undefined> {
const gitExtension =
extensions.getExtension<GitExtension>("vscode.git")?.exports;
async function getGitExtensionAPI(): Promise<
ValueResult<GitExtensionAPI, string>
> {
const gitExtension = extensions.getExtension<GitExtension>("vscode.git");
if (!gitExtension) {
return undefined;
return ValueResult.fail(["Git extension not found"]);
}
const git = gitExtension.getAPI(1);
if (!gitExtension.isActive) {
await gitExtension.activate();
}
const gitExtensionExports = gitExtension.exports;
if (!gitExtensionExports.enabled) {
return ValueResult.fail(["Git extension is not enabled"]);
}
const git = gitExtensionExports.getAPI(1);
if (git.state === "initialized") {
return git;
return ValueResult.ok(git);
}
return new Promise((resolve) => {
git.onDidChangeState((state) => {
if (state === "initialized") {
resolve(git);
resolve(ValueResult.ok(git));
}
});
});
@@ -118,11 +129,13 @@ function findGitHubRepositoryForRemote(remoteUrl: string):
export async function findGitHubRepositoryForWorkspace(): Promise<
ValueResult<{ owner: string; name: string }, string>
> {
const git = await getGitExtensionAPI();
if (!git) {
return ValueResult.fail(["Git extension is not installed or initialized"]);
const gitResult = await getGitExtensionAPI();
if (gitResult.isFailure) {
return ValueResult.fail(gitResult.errors);
}
const git = gitResult.value;
const primaryWorkspaceFolder = getOnDiskWorkspaceFoldersObjects()[0]?.uri;
if (!primaryWorkspaceFolder) {
return ValueResult.fail(["No workspace folder found"]);