l0bsterssg

node.js static responsive blog post generator
Log | Files | Refs | README

mkdirp-native.js (969B)


      1 const {dirname} = require('path')
      2 const {findMade, findMadeSync} = require('./find-made.js')
      3 const {mkdirpManual, mkdirpManualSync} = require('./mkdirp-manual.js')
      4 
      5 const mkdirpNative = (path, opts) => {
      6   opts.recursive = true
      7   const parent = dirname(path)
      8   if (parent === path)
      9     return opts.mkdirAsync(path, opts)
     10 
     11   return findMade(opts, path).then(made =>
     12     opts.mkdirAsync(path, opts).then(() => made)
     13     .catch(er => {
     14       if (er.code === 'ENOENT')
     15         return mkdirpManual(path, opts)
     16       else
     17         throw er
     18     }))
     19 }
     20 
     21 const mkdirpNativeSync = (path, opts) => {
     22   opts.recursive = true
     23   const parent = dirname(path)
     24   if (parent === path)
     25     return opts.mkdirSync(path, opts)
     26 
     27   const made = findMadeSync(opts, path)
     28   try {
     29     opts.mkdirSync(path, opts)
     30     return made
     31   } catch (er) {
     32     if (er.code === 'ENOENT')
     33       return mkdirpManualSync(path, opts)
     34     else
     35       throw er
     36   }
     37 }
     38 
     39 module.exports = {mkdirpNative, mkdirpNativeSync}