26 lines
710 B
JavaScript
26 lines
710 B
JavaScript
import {randomBytes} from 'crypto';
|
|
import {mkdir} from 'fs/promises';
|
|
import {tmpdir} from 'os';
|
|
import {join} from 'path';
|
|
|
|
import {rimraf} from 'rimraf';
|
|
|
|
export function id() {
|
|
return new Promise((resolve, reject) => {
|
|
randomBytes(16, (error, bytes) => (error ? reject(error) : resolve(bytes.toString('hex'))));
|
|
});
|
|
}
|
|
|
|
export async function createWorkspace() {
|
|
const workspace = join(tmpdir(), '@flecks', 'core', 'testing', await id());
|
|
await rimraf(workspace);
|
|
await mkdir(workspace, {recursive: true});
|
|
// sheeeeesh
|
|
process.prependListener('message', async (message) => {
|
|
if ('__workerpool-terminate__' === message) {
|
|
rimraf.sync(workspace);
|
|
}
|
|
});
|
|
return workspace;
|
|
}
|