1
1
mirror of https://github.com/theoludwig/programming-challenges.git synced 2024-07-18 02:20:12 +02:00
programming-challenges/cli/services/TemporaryFolder.ts

34 lines
887 B
TypeScript
Raw Normal View History

import { fileURLToPath } from "node:url"
import fs from "node:fs"
import crypto from "node:crypto"
2022-09-22 16:16:21 +02:00
import { docker } from "./Docker.js"
2022-09-22 16:16:21 +02:00
export class TemporaryFolder {
public readonly id: string
public readonly path: string
public constructor() {
this.id = crypto.randomUUID()
this.path = fileURLToPath(new URL(`../../temp/${this.id}`, import.meta.url))
}
public async create(): Promise<void> {
await fs.promises.mkdir(this.path, { recursive: true })
}
public async delete(): Promise<void> {
await fs.promises.rm(this.path, { recursive: true, force: true })
}
public static async cleanAll(): Promise<void> {
try {
2023-01-10 23:15:36 +01:00
const temporaryPath = fileURLToPath(
new URL("../../temp", import.meta.url),
2023-01-10 23:15:36 +01:00
)
2022-09-22 16:16:21 +02:00
await fs.promises.rm(temporaryPath, { recursive: true, force: true })
await docker.removeImages()
} catch {}
}
}