| 'use strict' |
| |
| const u = require('universalify').fromCallback |
| const path = require('path') |
| const fs = require('graceful-fs') |
| const mkdir = require('../mkdirs') |
| const pathExists = require('../path-exists').pathExists |
| |
| function createFile (file, callback) { |
| function makeFile () { |
| fs.writeFile(file, '', err => { |
| if (err) return callback(err) |
| callback() |
| }) |
| } |
| |
| fs.stat(file, (err, stats) => { // eslint-disable-line handle-callback-err |
| if (!err && stats.isFile()) return callback() |
| const dir = path.dirname(file) |
| pathExists(dir, (err, dirExists) => { |
| if (err) return callback(err) |
| if (dirExists) return makeFile() |
| mkdir.mkdirs(dir, err => { |
| if (err) return callback(err) |
| makeFile() |
| }) |
| }) |
| }) |
| } |
| |
| function createFileSync (file) { |
| let stats |
| try { |
| stats = fs.statSync(file) |
| } catch (e) {} |
| if (stats && stats.isFile()) return |
| |
| const dir = path.dirname(file) |
| if (!fs.existsSync(dir)) { |
| mkdir.mkdirsSync(dir) |
| } |
| |
| fs.writeFileSync(file, '') |
| } |
| |
| module.exports = { |
| createFile: u(createFile), |
| createFileSync |
| } |