Merge pull request #3013 from github/koesie10/use-selected-language
Use selected language when creating query
This commit is contained in:
@@ -930,6 +930,7 @@ async function activateWithInstalledDistribution(
|
|||||||
databaseUI,
|
databaseUI,
|
||||||
localQueryResultsView,
|
localQueryResultsView,
|
||||||
queryStorageDir,
|
queryStorageDir,
|
||||||
|
languageContext,
|
||||||
);
|
);
|
||||||
ctx.subscriptions.push(localQueries);
|
ctx.subscriptions.push(localQueries);
|
||||||
|
|
||||||
|
|||||||
@@ -67,4 +67,12 @@ export class LanguageContextStore extends DisposableObject {
|
|||||||
this.languageFilter === language
|
this.languageFilter === language
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public get selectedLanguage(): QueryLanguage | undefined {
|
||||||
|
if (this.languageFilter === "All") {
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.languageFilter;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,6 +50,7 @@ import { createMultiSelectionCommand } from "../common/vscode/selection-commands
|
|||||||
import { findLanguage } from "../codeql-cli/query-language";
|
import { findLanguage } from "../codeql-cli/query-language";
|
||||||
import type { QueryTreeViewItem } from "../queries-panel/query-tree-view-item";
|
import type { QueryTreeViewItem } from "../queries-panel/query-tree-view-item";
|
||||||
import { tryGetQueryLanguage } from "../common/query-language";
|
import { tryGetQueryLanguage } from "../common/query-language";
|
||||||
|
import { LanguageContextStore } from "../language-context-store";
|
||||||
|
|
||||||
interface DatabaseQuickPickItem extends QuickPickItem {
|
interface DatabaseQuickPickItem extends QuickPickItem {
|
||||||
databaseItem: DatabaseItem;
|
databaseItem: DatabaseItem;
|
||||||
@@ -71,6 +72,7 @@ export class LocalQueries extends DisposableObject {
|
|||||||
private readonly databaseUI: DatabaseUI,
|
private readonly databaseUI: DatabaseUI,
|
||||||
private readonly localQueryResultsView: ResultsView,
|
private readonly localQueryResultsView: ResultsView,
|
||||||
private readonly queryStorageDir: string,
|
private readonly queryStorageDir: string,
|
||||||
|
private readonly languageContextStore: LanguageContextStore,
|
||||||
) {
|
) {
|
||||||
super();
|
super();
|
||||||
}
|
}
|
||||||
@@ -323,6 +325,7 @@ export class LocalQueries extends DisposableObject {
|
|||||||
const credentials = isCanary() ? this.app.credentials : undefined;
|
const credentials = isCanary() ? this.app.credentials : undefined;
|
||||||
const contextStoragePath =
|
const contextStoragePath =
|
||||||
this.app.workspaceStoragePath || this.app.globalStoragePath;
|
this.app.workspaceStoragePath || this.app.globalStoragePath;
|
||||||
|
const language = this.languageContextStore.selectedLanguage;
|
||||||
const skeletonQueryWizard = new SkeletonQueryWizard(
|
const skeletonQueryWizard = new SkeletonQueryWizard(
|
||||||
this.cliServer,
|
this.cliServer,
|
||||||
progress,
|
progress,
|
||||||
@@ -330,6 +333,7 @@ export class LocalQueries extends DisposableObject {
|
|||||||
this.app.logger,
|
this.app.logger,
|
||||||
this.databaseManager,
|
this.databaseManager,
|
||||||
contextStoragePath,
|
contextStoragePath,
|
||||||
|
language,
|
||||||
);
|
);
|
||||||
await skeletonQueryWizard.execute();
|
await skeletonQueryWizard.execute();
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -41,7 +41,6 @@ export const QUERY_LANGUAGE_TO_DATABASE_REPO: QueryLanguagesToDatabaseMap = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export class SkeletonQueryWizard {
|
export class SkeletonQueryWizard {
|
||||||
private language: QueryLanguage | undefined;
|
|
||||||
private fileName = "example.ql";
|
private fileName = "example.ql";
|
||||||
private qlPackStoragePath: string | undefined;
|
private qlPackStoragePath: string | undefined;
|
||||||
|
|
||||||
@@ -52,6 +51,7 @@ export class SkeletonQueryWizard {
|
|||||||
private readonly logger: BaseLogger,
|
private readonly logger: BaseLogger,
|
||||||
private readonly databaseManager: DatabaseManager,
|
private readonly databaseManager: DatabaseManager,
|
||||||
private readonly databaseStoragePath: string | undefined,
|
private readonly databaseStoragePath: string | undefined,
|
||||||
|
private language: QueryLanguage | undefined = undefined,
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
private get folderName() {
|
private get folderName() {
|
||||||
@@ -59,8 +59,11 @@ export class SkeletonQueryWizard {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public async execute() {
|
public async execute() {
|
||||||
// show quick pick to choose language
|
if (!this.language) {
|
||||||
this.language = await this.chooseLanguage();
|
// show quick pick to choose language
|
||||||
|
this.language = await this.chooseLanguage();
|
||||||
|
}
|
||||||
|
|
||||||
if (!this.language) {
|
if (!this.language) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import * as databaseFetcher from "../../../../src/databases/database-fetcher";
|
|||||||
import { createMockDB } from "../../../factories/databases/databases";
|
import { createMockDB } from "../../../factories/databases/databases";
|
||||||
import { asError } from "../../../../src/common/helpers-pure";
|
import { asError } from "../../../../src/common/helpers-pure";
|
||||||
import { Setting } from "../../../../src/config";
|
import { Setting } from "../../../../src/config";
|
||||||
|
import { QueryLanguage } from "../../../../src/common/query-language";
|
||||||
|
|
||||||
describe("SkeletonQueryWizard", () => {
|
describe("SkeletonQueryWizard", () => {
|
||||||
let mockCli: CodeQLCliServer;
|
let mockCli: CodeQLCliServer;
|
||||||
@@ -134,6 +135,27 @@ describe("SkeletonQueryWizard", () => {
|
|||||||
expect(quickPickSpy).toHaveBeenCalled();
|
expect(quickPickSpy).toHaveBeenCalled();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe("with language", () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
wizard = new SkeletonQueryWizard(
|
||||||
|
mockCli,
|
||||||
|
jest.fn(),
|
||||||
|
credentials,
|
||||||
|
extLogger,
|
||||||
|
mockDatabaseManager,
|
||||||
|
storagePath,
|
||||||
|
QueryLanguage.Swift,
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should not prompt for language", async () => {
|
||||||
|
await wizard.execute();
|
||||||
|
|
||||||
|
expect(mockCli.getSupportedLanguages).not.toHaveBeenCalled();
|
||||||
|
expect(quickPickSpy).not.toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
describe("if QL pack doesn't exist", () => {
|
describe("if QL pack doesn't exist", () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
jest
|
jest
|
||||||
|
|||||||
Reference in New Issue
Block a user