summaryrefslogtreecommitdiff
path: root/node_modules/fs-extra/lib/ensure/file.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/fs-extra/lib/ensure/file.js')
-rw-r--r--node_modules/fs-extra/lib/ensure/file.js65
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)