forked from public/fvtt-cthulhu-eternal
		
	
		
			
				
	
	
		
			47 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 'use strict';
 | |
| 
 | |
| var fo = require('../../file-operations');
 | |
| var getCodec = require('../../codecs');
 | |
| var DEFAULT_ENCODING = require('../../constants').DEFAULT_ENCODING;
 | |
| 
 | |
| function writeBuffer(file, optResolver, onWritten) {
 | |
|   var flags = fo.getFlags({
 | |
|     overwrite: optResolver.resolve('overwrite', file),
 | |
|     append: optResolver.resolve('append', file),
 | |
|   });
 | |
| 
 | |
|   var encoding = optResolver.resolve('encoding', file);
 | |
|   var codec = getCodec(encoding);
 | |
|   if (encoding && !codec) {
 | |
|     return onWritten(new Error('Unsupported encoding: ' + encoding));
 | |
|   }
 | |
| 
 | |
|   var opt = {
 | |
|     mode: file.stat.mode,
 | |
|     flags: flags,
 | |
|   };
 | |
| 
 | |
|   var contents = file.contents;
 | |
| 
 | |
|   if (encoding && codec.enc !== DEFAULT_ENCODING) {
 | |
|     contents = getCodec(DEFAULT_ENCODING).decode(contents);
 | |
|     contents = codec.encode(contents);
 | |
|   }
 | |
| 
 | |
|   fo.writeFile(file.path, contents, opt, onWriteFile);
 | |
| 
 | |
|   function onWriteFile(writeErr, fd) {
 | |
|     if (writeErr) {
 | |
|       return fo.closeFd(writeErr, fd, onWritten);
 | |
|     }
 | |
| 
 | |
|     fo.updateMetadata(fd, file, onUpdate);
 | |
| 
 | |
|     function onUpdate(updateErr) {
 | |
|       fo.closeFd(updateErr, fd, onWritten);
 | |
|     }
 | |
|   }
 | |
| }
 | |
| 
 | |
| module.exports = writeBuffer;
 |