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.
		
		
		
		
		
			
		
			
				
					30 lines
				
				763 B
			
		
		
			
		
	
	
					30 lines
				
				763 B
			| 
											3 years ago
										 | const {dirname} = require('path') | ||
|  | 
 | ||
|  | const findMade = (opts, parent, path = undefined) => { | ||
|  |   // we never want the 'made' return value to be a root directory
 | ||
|  |   if (path === parent) | ||
|  |     return Promise.resolve() | ||
|  | 
 | ||
|  |   return opts.statAsync(parent).then( | ||
|  |     st => st.isDirectory() ? path : undefined, // will fail later
 | ||
|  |     er => er.code === 'ENOENT' | ||
|  |       ? findMade(opts, dirname(parent), parent) | ||
|  |       : undefined | ||
|  |   ) | ||
|  | } | ||
|  | 
 | ||
|  | const findMadeSync = (opts, parent, path = undefined) => { | ||
|  |   if (path === parent) | ||
|  |     return undefined | ||
|  | 
 | ||
|  |   try { | ||
|  |     return opts.statSync(parent).isDirectory() ? path : undefined | ||
|  |   } catch (er) { | ||
|  |     return er.code === 'ENOENT' | ||
|  |       ? findMadeSync(opts, dirname(parent), parent) | ||
|  |       : undefined | ||
|  |   } | ||
|  | } | ||
|  | 
 | ||
|  | module.exports = {findMade, findMadeSync} |