Skip to content

Commit 7048944

Browse files
committed
Fix error when Git extension is disabled
1 parent a04f70e commit 7048944

1 file changed

Lines changed: 23 additions & 10 deletions

File tree

extensions/ql-vscode/src/databases/github-repository-finder.ts

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,22 +9,33 @@ import { ValueResult } from "../common/value-result";
99

1010
// Based on https://github.com/microsoft/sarif-vscode-extension/blob/a1740e766122c1759d9f39d580c18b82d9e0dea4/src/extension/index.activateGithubAnalyses.ts
1111

12-
async function getGitExtensionAPI(): Promise<GitExtensionAPI | undefined> {
13-
const gitExtension =
14-
extensions.getExtension<GitExtension>("vscode.git")?.exports;
12+
async function getGitExtensionAPI(): Promise<
13+
ValueResult<GitExtensionAPI, string>
14+
> {
15+
const gitExtension = extensions.getExtension<GitExtension>("vscode.git");
1516
if (!gitExtension) {
16-
return undefined;
17+
return ValueResult.fail(["Git extension not found"]);
18+
}
19+
20+
if (!gitExtension.isActive) {
21+
await gitExtension.activate();
1722
}
1823

19-
const git = gitExtension.getAPI(1);
24+
const gitExtensionExports = gitExtension.exports;
25+
26+
if (!gitExtensionExports.enabled) {
27+
return ValueResult.fail(["Git extension is not enabled"]);
28+
}
29+
30+
const git = gitExtensionExports.getAPI(1);
2031
if (git.state === "initialized") {
21-
return git;
32+
return ValueResult.ok(git);
2233
}
2334

2435
return new Promise((resolve) => {
2536
git.onDidChangeState((state) => {
2637
if (state === "initialized") {
27-
resolve(git);
38+
resolve(ValueResult.ok(git));
2839
}
2940
});
3041
});
@@ -118,11 +129,13 @@ function findGitHubRepositoryForRemote(remoteUrl: string):
118129
export async function findGitHubRepositoryForWorkspace(): Promise<
119130
ValueResult<{ owner: string; name: string }, string>
120131
> {
121-
const git = await getGitExtensionAPI();
122-
if (!git) {
123-
return ValueResult.fail(["Git extension is not installed or initialized"]);
132+
const gitResult = await getGitExtensionAPI();
133+
if (gitResult.isFailure) {
134+
return ValueResult.fail(gitResult.errors);
124135
}
125136

137+
const git = gitResult.value;
138+
126139
const primaryWorkspaceFolder = getOnDiskWorkspaceFoldersObjects()[0]?.uri;
127140
if (!primaryWorkspaceFolder) {
128141
return ValueResult.fail(["No workspace folder found"]);

0 commit comments

Comments
 (0)