@@ -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