const fs = require('fs'); const os = require('os'); const path = require('path'); const { promisify } = require('util'); const mkdirp = require('mkdirp'); // Promisify common fs functions. const stat = promisify(fs.stat); const readFile = promisify(fs.readFile); const writeFile = promisify(fs.writeFile); const readdir = promisify(fs.readdir); /** * Creates a temporary directory and returns it path. * * @returns {Promise} */ function createTemp() { return promisify(fs.mkdtemp)(`${os.tmpdir()}${path.sep}`); } /** * Ensures the given path exists. * - If the path already exist, it's fine - it does nothing. * - If the path doesn't exist, it will create it. * * @param {string} path * @returns {Promise} */ function ensureDirectoryExists(dir) { return stat(dir).catch(() => mkdirp(dir)); } module.exports = { stat, readdir, readFile, writeFile, createTemp, ensureDirectoryExists, };