@@ -2,9 +2,8 @@ import type { CancellationToken } from "vscode";
22import { Uri, window } from "vscode";
33import { join, sep, basename, relative } from "path";
44import { dump, load } from "js-yaml";
5- import { copy, writeFile, readFile, mkdirp } from "fs-extra";
6- import type { DirectoryResult } from "tmp-promise";
7- import { dir, tmpName } from "tmp-promise";
5+ import { copy, writeFile, readFile, mkdirp, remove } from "fs-extra";
6+ import { nanoid } from "nanoid";
87import { tmpDir } from "../tmp-dir";
98import { getOnDiskWorkspaceFolders } from "../common/vscode/workspace-folders";
109import type { Credentials } from "../common/authentication";
@@ -236,39 +235,28 @@ async function copyExistingQueryPack(
236235}
237236
238237interface RemoteQueryTempDir {
239- remoteQueryDir: DirectoryResult ;
238+ remoteQueryDir: string ;
240239 queryPackDir: string;
241240 compiledPackDir: string;
242241 bundleFile: string;
243242}
244243
245244async function createRemoteQueriesTempDirectory(): Promise<RemoteQueryTempDir> {
246- const shortRemoteQueryDir = await dir({
247- dir: tmpDir.name,
248- unsafeCleanup: true,
249- });
250245 // Expand 8.3 filenames here to work around a CLI bug where `codeql pack bundle` produces an empty
251246 // archive if the pack path contains any 8.3 components.
252- const remoteQueryDir = {
253- ...shortRemoteQueryDir,
254- path: await expandShortPaths(shortRemoteQueryDir.path, extLogger),
255- };
256- const queryPackDir = join(remoteQueryDir.path, "query-pack");
247+ const tmpDirPath = await expandShortPaths(tmpDir.name, extLogger);
248+
249+ const remoteQueryDir = join(tmpDirPath, `remote-query-${nanoid()}`);
250+ await mkdirp(remoteQueryDir);
251+
252+ const queryPackDir = join(remoteQueryDir, "query-pack");
257253 await mkdirp(queryPackDir);
258- const compiledPackDir = join(remoteQueryDir.path, "compiled-pack");
259- const bundleFile = await expandShortPaths(
260- await getPackedBundlePath(tmpDir.name),
261- extLogger,
262- );
263- return { remoteQueryDir, queryPackDir, compiledPackDir, bundleFile };
264- }
265254
266- async function getPackedBundlePath(remoteQueryDir: string): Promise<string> {
267- return tmpName({
268- dir: remoteQueryDir,
269- postfix: "generated.tgz",
270- prefix: "qlpack",
271- });
255+ const compiledPackDir = join(remoteQueryDir, "compiled-pack");
256+
257+ const bundleFile = join(remoteQueryDir, `qlpack-${nanoid()}-generated.tgz`);
258+
259+ return { remoteQueryDir, queryPackDir, compiledPackDir, bundleFile };
272260}
273261
274262interface PreparedRemoteQuery {
@@ -337,7 +325,7 @@ export async function prepareRemoteQueryRun(
337325 token,
338326 );
339327 } finally {
340- await tempDir.remoteQueryDir.cleanup( );
328+ await remove( tempDir.remoteQueryDir);
341329 }
342330
343331 if (token.isCancellationRequested) {
0 commit comments