You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
32 lines
728 B
JavaScript
32 lines
728 B
JavaScript
5 years ago
|
const fs = require('fs')
|
||
|
const util = require('util')
|
||
|
const path = require('path')
|
||
|
|
||
|
const projectRoot = path.join(__dirname, '..')
|
||
|
const cacheDir = path.join(projectRoot, 'cache')
|
||
|
const dataDir = path.join(projectRoot, 'data')
|
||
|
|
||
|
const readFile = util.promisify(fs.readFile)
|
||
|
const writeFile = util.promisify(fs.writeFile)
|
||
|
const mkdir = util.promisify(fs.mkdir)
|
||
|
|
||
|
async function mkdirAndWriteFile(filepath, data) {
|
||
|
try {
|
||
|
// create directory
|
||
|
await mkdir(path.dirname(filepath))
|
||
|
} catch (err) {
|
||
|
// ignore "directory exists errors"
|
||
|
if (err.code !== 'EEXIST') throw err
|
||
|
}
|
||
|
return writeFile(filepath, data)
|
||
|
}
|
||
|
|
||
|
module.exports = {
|
||
|
projectRoot,
|
||
|
cacheDir,
|
||
|
dataDir,
|
||
|
readFile,
|
||
|
writeFile,
|
||
|
mkdirAndWriteFile
|
||
|
}
|