You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					40 lines
				
				969 B
			
		
		
			
		
	
	
					40 lines
				
				969 B
			| 
											3 years ago
										 | 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} |