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.
		
		
		
		
		
			
		
			
				
					50 lines
				
				1.1 KiB
			
		
		
			
		
	
	
					50 lines
				
				1.1 KiB
			| 
											3 years ago
										 | '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 | ||
|  | } |