123456789101112131415161718192021222324252627282930313233343536373839 |
- const {dirname} = require('path')
- const {findMade, findMadeSync} = require('./find-made.js')
- const {mkdirpManual, mkdirpManualSync} = require('./mkdirp-manual.js')
-
- const mkdirpNative = (path, opts) => {
- opts.recursive = true
- const parent = dirname(path)
- if (parent === path)
- return opts.mkdirAsync(path, opts)
-
- return findMade(opts, path).then(made =>
- opts.mkdirAsync(path, opts).then(() => made)
- .catch(er => {
- if (er.code === 'ENOENT')
- return mkdirpManual(path, opts)
- else
- throw er
- }))
- }
-
- const mkdirpNativeSync = (path, opts) => {
- opts.recursive = true
- const parent = dirname(path)
- if (parent === path)
- return opts.mkdirSync(path, opts)
-
- const made = findMadeSync(opts, path)
- try {
- opts.mkdirSync(path, opts)
- return made
- } catch (er) {
- if (er.code === 'ENOENT')
- return mkdirpManualSync(path, opts)
- else
- throw er
- }
- }
-
- module.exports = {mkdirpNative, mkdirpNativeSync}
|