| 
					
				 | 
			
			
				@@ -1,6 +1,7 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 module.exports = function(grunt) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   var path = require('path'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  var fs = require('fs'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   var amberc = require('../../bin/amberc.js'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   /** 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -11,16 +12,17 @@ module.exports = function(grunt) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				          closure_jar: ''               // optional 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        helloWorld: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         src: ['HelloWorld.st'],             // REQUIRED 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         working_dir: 'projects/HelloWorld', // optional 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         main_class: 'HelloWorld',           // optional 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         output_name: 'helloWorld',          // optional 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         libraries: 'Canvas',                // optional 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         init: 'myInit',                     // optional 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         main_file: 'myMain.js',             // optional 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         deploy: true,                       // optional 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         output_suffix: 'mySuffix',          // optional 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         library_suffix: '-0.9',             // optional 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         src: ['HelloWorld.st'],                // REQUIRED 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         working_dir: 'projects/HelloWorld/st', // optional 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         target_dir: 'projects/HelloWorld/js',  // optional 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         main_class: 'HelloWorld',              // optional 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         output_name: 'helloWorld',            // optional 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         libraries: 'Canvas',                  // optional 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         init: 'myInit',                       // optional 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         main_file: 'myMain.js',               // optional 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         deploy: true,                         // optional 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         output_suffix: 'mySuffix',            // optional 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         library_suffix: '-0.9',               // optional 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -48,8 +50,21 @@ module.exports = function(grunt) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // run the compiler 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // change back to the old working directory and call the async callback once finished 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var self = this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     compiler.main(parameters, function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (undefined !== self.data.target_dir) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        var absolute_target_dir = path.join(current_dir, self.data.target_dir); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        replaceFileSuffix_moveToTargetDir(self.data.src, absolute_target_dir); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // if deploy is set also copy the deploy files 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (self.data.deploy) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          var suffix = self.data.output_suffix || 'deploy'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          suffix = '.' + suffix + '.js'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          replaceFileSuffix_moveToTargetDir(self.data.src, absolute_target_dir, suffix); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // reset working directory 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       grunt.file.setBase(current_dir); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // signal that task has finished 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       done(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   }); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -102,4 +117,21 @@ module.exports = function(grunt) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return parameters; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   * Replace '.st' suffix of \p files with '.js' or with \p replace_suffix if this parameter is given. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   * Afterwards move the files with replaced suffix to \p target_dir if the files exist. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  function replaceFileSuffix_moveToTargetDir(files, target_dir, replace_suffix) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var suffix = replace_suffix || '.js'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var compiledFiles = files.map(function(item) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return item.replace(/.st$/g, suffix); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    compiledFiles.forEach(function(file) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (path.existsSync(file)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        fs.renameSync(file, path.join(target_dir, file)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }; 
			 |