wip: data extensions editor without ql submodule

This commit is contained in:
Koen Vlaswinkel
2023-07-19 11:21:55 +02:00
committed by Nora
parent 6dfe1736f8
commit f4da522953
3 changed files with 35 additions and 21 deletions

View File

@@ -99,6 +99,36 @@ export class DataExtensionsEditorModule {
return;
}
// TODO: Copy the files to a temporary directory and install pack dependencies
const queryDir = (await dir({ unsafeCleanup: true })).path;
// TODO: Write both the application mode and framework mode query
const queryFile = join(queryDir, "FetchExternalApis.ql");
await writeFile(queryFile, query[queryName], "utf8");
if (query.dependencies) {
for (const [filename, contents] of Object.entries(
query.dependencies,
)) {
const dependencyFile = join(queryDir, filename);
await writeFile(dependencyFile, contents, "utf8");
}
}
const syntheticQueryPack = {
name: "codeql/external-api-usage",
version: "0.0.0",
dependencies: {
[`codeql/${databaseItem.language}-all`]: "*",
},
};
const qlpackFile = join(queryDir, "codeql-pack.yml");
await writeFile(qlpackFile, dumpYaml(syntheticQueryPack), "utf8");
// TODO: install pack dependencies in temporary file (`codeql pack install`)
const view = new DataExtensionsEditorView(
this.ctx,
this.app,
@@ -106,6 +136,7 @@ export class DataExtensionsEditorModule {
this.cliServer,
this.queryRunner,
this.queryStorageDir,
queryDir,
db,
modelFile,
);

View File

@@ -71,6 +71,7 @@ export class DataExtensionsEditorView extends AbstractWebview<
private readonly cliServer: CodeQLCliServer,
private readonly queryRunner: QueryRunner,
private readonly queryStorageDir: string,
private readonly queryDir: string,
private readonly databaseItem: DatabaseItem,
private readonly extensionPack: ExtensionPack,
private mode: Mode = Mode.Application,

View File

@@ -35,6 +35,7 @@ export async function runQuery(
databaseItem,
queryStorageDir,
progress,
queryDir,
token,
}: RunQueryOptions,
): Promise<CoreCompletedQuery | undefined> {
@@ -63,27 +64,7 @@ export async function runQuery(
return;
}
const queryDir = (await dir({ unsafeCleanup: true })).path;
const queryFile = join(queryDir, "FetchExternalApis.ql");
await writeFile(queryFile, query[queryName], "utf8");
if (query.dependencies) {
for (const [filename, contents] of Object.entries(query.dependencies)) {
const dependencyFile = join(queryDir, filename);
await writeFile(dependencyFile, contents, "utf8");
}
}
const syntheticQueryPack = {
name: "codeql/external-api-usage",
version: "0.0.0",
dependencies: {
[`codeql/${databaseItem.language}-all`]: "*",
},
};
const qlpackFile = join(queryDir, "codeql-pack.yml");
await writeFile(qlpackFile, dumpYaml(syntheticQueryPack), "utf8");
// TODO: install dependencies
const additionalPacks = getOnDiskWorkspaceFolders();
const extensionPacks = Object.keys(
@@ -93,6 +74,7 @@ export async function runQuery(
const queryRun = queryRunner.createQueryRun(
databaseItem.databaseUri.fsPath,
{
// TODO: select correct query file based on the `queryName` and `queryDir`
queryPath: queryFile,
quickEvalPosition: undefined,
quickEvalCountOnly: false,