diff options
Diffstat (limited to 'node_modules/fs-extra/lib/ensure/file.js')
| -rw-r--r-- | node_modules/fs-extra/lib/ensure/file.js | 65 |
1 files changed, 31 insertions, 34 deletions
diff --git a/node_modules/fs-extra/lib/ensure/file.js b/node_modules/fs-extra/lib/ensure/file.js index 15cc473c..a55c2d96 100644 --- a/node_modules/fs-extra/lib/ensure/file.js +++ b/node_modules/fs-extra/lib/ensure/file.js @@ -1,50 +1,47 @@ 'use strict' -const u = require('universalify').fromCallback +const u = require('universalify').fromPromise const path = require('path') -const fs = require('graceful-fs') +const fs = require('../fs') const mkdir = require('../mkdirs') -function createFile (file, callback) { - function makeFile () { - fs.writeFile(file, '', err => { - if (err) return callback(err) - callback() - }) - } +async function createFile (file) { + let stats + try { + stats = await fs.stat(file) + } catch { } + if (stats && stats.isFile()) return - fs.stat(file, (err, stats) => { // eslint-disable-line handle-callback-err - if (!err && stats.isFile()) return callback() - const dir = path.dirname(file) - fs.stat(dir, (err, stats) => { - if (err) { - // if the directory doesn't exist, make it - if (err.code === 'ENOENT') { - return mkdir.mkdirs(dir, err => { - if (err) return callback(err) - makeFile() - }) - } - return callback(err) - } + const dir = path.dirname(file) - if (stats.isDirectory()) makeFile() - else { - // parent is not a directory - // This is just to cause an internal ENOTDIR error to be thrown - fs.readdir(dir, err => { - if (err) return callback(err) - }) - } - }) - }) + let dirStats = null + try { + dirStats = await fs.stat(dir) + } catch (err) { + // if the directory doesn't exist, make it + if (err.code === 'ENOENT') { + await mkdir.mkdirs(dir) + await fs.writeFile(file, '') + return + } else { + throw err + } + } + + if (dirStats.isDirectory()) { + await fs.writeFile(file, '') + } else { + // parent is not a directory + // This is just to cause an internal ENOTDIR error to be thrown + await fs.readdir(dir) + } } function createFileSync (file) { let stats try { stats = fs.statSync(file) - } catch {} + } catch { } if (stats && stats.isFile()) return const dir = path.dirname(file) |
