forked from LeenkxTeam/LNXSDK
		
	
		
			
	
	
		
			50 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			50 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | '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 | ||
|  | } |