| 
					
				 | 
			
			
				@@ -125,11 +125,10 @@ var createDefaults = function(amber_dir, finished_callback){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 AmberC.prototype.main = function(parameters, finished_callback) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	console.time('Compile Time'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	if (1 > parameters.length) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		this.usage(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		this.defaults = createDefaults(this.amber_dir, finished_callback); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		this.handle_options(parameters); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	this.defaults = createDefaults(this.amber_dir, finished_callback); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	this.handle_options(parameters); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if (this.check_parameters_ok(this.defaults)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		var self = this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		this.check_for_closure_compiler(function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			self.collect_files(self.defaults.stFiles, self.defaults.jsFiles) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -138,6 +137,14 @@ AmberC.prototype.main = function(parameters, finished_callback) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * Check if the passed in parameters are sufficient/nonconflicting 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+AmberC.prototype.check_parameters_ok = function(parameters) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	return (undefined !== parameters); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * Process given program options and update defaults values. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * Followed by check_for_closure_compiler() and then collect_files(). 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -218,89 +225,6 @@ AmberC.prototype.handle_options = function(optionsArray) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * Print usage options and exit. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-AmberC.prototype.usage = function() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('Usage: amberc [-l lib1,lib2...] [-i init_file] [-m main_class] [-M main_file]'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('          [-o] [-O|-A] [-d] [-s suffix] [-S suffix] [file1 [file2 ...]] [Program]'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log(''); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('   amberc compiles Amber files - either separately or into a complete runnable'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('   program. If no .st files are listed only a linking stage is performed.'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('   Files listed will be handled using the following rules:'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log(''); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('   *.js'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('     Files are linked (concatenated) in listed order.'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('     If not found we look in $AMBER/js/'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log(''); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('   *.st'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('     Files are compiled into .js files before concatenation.'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('     If not found we look in $AMBER/st/.'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log(''); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('     NOTE: Each .st file is currently considered to be a fileout of a single class'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('     category of the same name as the file!'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log(''); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('   If no <Program> is specified each given .st file will be compiled into'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('   a matching .js file. Otherwise a <Program>.js file is linked together based on'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('   the given options:'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('  -l library1,library2'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('     Add listed JavaScript libraries in listed order.'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('     Libraries are not separated by spaces or end with .js.'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log(''); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('  -i init_file'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('     Add library initializer <init_file> instead of default $AMBER/js/init.js '); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log(''); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('  -m main_class'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('     Add a call to the class method main_class>>main at the end of <Program>.'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log(''); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('  -M main_file'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('     Add <main_file> at the end of <Program.js> acting as #main.'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log(''); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('  -o'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('     Optimize each .js file using the Google closure compiler.'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('     Using Closure compiler found at ~/compiler.jar'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log(''); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('  -O'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('     Optimize final <Program>.js using the Google closure compiler.'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('     Using Closure compiler found at ~/compiler.jar'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log(''); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('  -A Same as -O but use --compilation_level ADVANCED_OPTIMIZATIONS'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log(''); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('  -d'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('     Additionally export code for deploy - stripped from source etc.'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('     Uses suffix ".deploy.js" in addition to any explicit suffic set by -s.'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log(''); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('  -s suffix'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('     Add <suffix> to compiled .js files. File.st is then compiled into'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('     File.<suffix>.js.'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log(''); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('  -S suffix'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('     Use <suffix> for all libraries accessed using -l. This makes it possible'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('     to have multiple flavors of Amber and libraries in the same place.'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log(''); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log(''); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('     Example invocations:'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log(''); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('     Just compile Kernel-Objects.st to Kernel-Objects.js:'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log(''); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('        amberc Kernel-Objects.st'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log(''); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('     Compile Hello.st to Hello.js and create complete program called Program.js.'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('     Additionally add a call to the class method Hello>>main:'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log(''); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('        amberc -m Hello Hello.st Program'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log(''); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('     Compile Cat1.st and Cat2.st files into corresponding .js files.'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('     Link them with myboot.js and myKernel.js and add myinit.js as custom'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('     initializer file. Add main.js last which contains the startup code'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('      and merge everything into a complete program named Program.js:'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log(''); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('        amberc -M main.js -i myinit.js myboot.js myKernel.js Cat1.st Cat2.st Program'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	process.exit(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * Checks if the java executable exists and afterwards, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * if compiler.jar exists at the path stored in this.closure_jar. 
			 |