This lets broccoli keep the dest folder up-to-date in 'watch' mode, so we should be able to use that for Karma.
		
			
				
	
	
		
			34 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| /// <reference path="./broccoli-filter.d.ts" />
 | |
| /// <reference path="../typings/node/node.d.ts" />
 | |
| /// <reference path="../typings/fs-extra/fs-extra.d.ts" />
 | |
| 
 | |
| import Filter = require('broccoli-filter');
 | |
| import fse = require('fs-extra');
 | |
| import path = require('path');
 | |
| 
 | |
| /**
 | |
|  * Intercepts each file as it is copied to the destination tempdir,
 | |
|  * and tees a copy to the given path outside the tmp dir.
 | |
|  */
 | |
| class DestCopy extends Filter {
 | |
|   constructor(private inputTree, private outputRoot: string) { super(inputTree); }
 | |
| 
 | |
|   getDestFilePath(relativePath: string): string { return relativePath; }
 | |
| 
 | |
|   processString(content: string, relativePath: string): string { return content; }
 | |
| 
 | |
|   processFile(srcDir, destDir, relativePath): Promise<any> {
 | |
|     return super.processFile(srcDir, destDir, relativePath)
 | |
|         .then(x => {
 | |
|           var destFile = path.join(this.outputRoot, this.getDestFilePath(relativePath));
 | |
|           var dir = path.dirname(destFile);
 | |
|           fse.mkdirsSync(dir);
 | |
|           fse.copySync(path.join(srcDir, relativePath), destFile);
 | |
|         });
 | |
|   }
 | |
| }
 | |
| 
 | |
| export = function destCopy(inputTree, outputRoot) {
 | |
|   return new DestCopy(inputTree, outputRoot);
 | |
| }
 |