forked from public/fvtt-cthulhu-eternal
		
	
		
			
				
	
	
		
			55 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 'use strict';
 | |
| 
 | |
| var path = require('path');
 | |
| 
 | |
| var fs = require('graceful-fs');
 | |
| var Vinyl = require('vinyl');
 | |
| var Transform = require('streamx').Transform;
 | |
| 
 | |
| function prepareSymlink(folderResolver, optResolver) {
 | |
|   if (!folderResolver) {
 | |
|     throw new Error('Invalid output folder');
 | |
|   }
 | |
| 
 | |
|   function normalize(file, cb) {
 | |
|     if (!Vinyl.isVinyl(file)) {
 | |
|       return cb(new Error('Received a non-Vinyl object in `symlink()`'));
 | |
|     }
 | |
| 
 | |
|     // TODO: Remove this after people upgrade vinyl/transition from gulp-util
 | |
|     if (typeof file.isSymbolic !== 'function') {
 | |
|       file = new Vinyl(file);
 | |
|     }
 | |
| 
 | |
|     var cwd = path.resolve(optResolver.resolve('cwd', file));
 | |
| 
 | |
|     var outFolderPath = folderResolver.resolve('outFolder', file);
 | |
|     if (!outFolderPath) {
 | |
|       return cb(new Error('Invalid output folder'));
 | |
|     }
 | |
|     var basePath = path.resolve(cwd, outFolderPath);
 | |
|     var writePath = path.resolve(basePath, file.relative);
 | |
| 
 | |
|     // Wire up new properties
 | |
|     // Note: keep the target stats for now, we may need them in link-file
 | |
|     file.stat = file.stat || new fs.Stats();
 | |
|     file.cwd = cwd;
 | |
|     file.base = basePath;
 | |
|     // This is the path we are linking *TO*
 | |
|     // Use `file.symlink` if it was set in the pipeline
 | |
|     file.symlink = file.symlink || file.path;
 | |
|     file.path = writePath;
 | |
|     // We have to set contents to null for a link
 | |
|     // Otherwise `isSymbolic()` returns false
 | |
|     file.contents = null;
 | |
| 
 | |
|     cb(null, file);
 | |
|   }
 | |
| 
 | |
|   return new Transform({
 | |
|     transform: normalize,
 | |
|   });
 | |
| }
 | |
| 
 | |
| module.exports = prepareSymlink;
 |