| 123456789101112131415161718192021222324252627 |
- const fs = require('fs')
- const fsExtra = require('fs-extra')
- const logger = require('@overleaf/logger')
- const os = require('os')
- const path = require('path')
- /**
- * Create a temporary directory before executing a function and cleaning up
- * after.
- *
- * @param {string} prefix - prefix for the temporary directory name
- * @param {Function} fn - async function to call
- */
- async function withTmpDir(prefix, fn) {
- const tmpDir = await fs.promises.mkdtemp(path.join(os.tmpdir(), prefix))
- try {
- await fn(tmpDir)
- } finally {
- fsExtra.remove(tmpDir).catch(err => {
- if (err.code !== 'ENOENT') {
- logger.error({ err }, 'failed to delete temporary file')
- }
- })
- }
- }
- module.exports = withTmpDir
|