| 
					
				 | 
			
			
				@@ -102,84 +102,87 @@ function handle_options(optionsArray) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // print available flags 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 function print_usage() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('Usage: amberc [-l lib1,lib2...] [-g jsGlobal1,jsGlobla2] [-m main_class] [-M main_file]'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('          [-n namespace] [-D output_dir] [-v] [-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(''); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	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('  -L directory1,directory2'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('     Add listed directories to the library search path.'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('     The order of processing is:'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('     1. current directory'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('     2. directories specified by -L'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('     3. $AMBER'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log(''); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('  -g jsGlobal1,jsGlobal2'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('     Comma separated list of JS global variable names.'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('     The names are added to a list containing "window", "document" and others.'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	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('  -n amd_namespace'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('     Export packages with <amd_namespace> as the require.js namespace.'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('     Default value is "amber_core".'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log(''); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('  -v'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('     Produce a more verbose output.'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log(''); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('  -D'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('     Specifies the output directory for all generated .js files.'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('     The hierarchy of the input files is not maintaned.'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('     If this option is omitted all generated .js files are placed next to their input files'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	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'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('     and merge everything into a complete program named Program.js:'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log(''); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	console.log('        amberc -M main.js myboot.js myKernel.js Cat1.st Cat2.st Program'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var usage = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        'Usage: amberc [-l lib1,lib2...] [-g jsGlobal1,jsGlobla2] [-m main_class] [-M main_file]', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '          [-n namespace] [-D output_dir] [-v] [-s suffix] [-S suffix] [file1 [file2 ...]] [Program]', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '   amberc compiles Amber files - either separately or into a complete runnable', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '   program. If no .st files are listed only a linking stage is performed.', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '   Files listed will be handled using the following rules:', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '   *.js', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '     Files are linked (concatenated) in listed order.', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '     If not found we look in $AMBER/js/', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '   *.st', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '     Files are compiled into .js files before concatenation.', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '     If not found we look in $AMBER/st/.', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '     NOTE: Each .st file is currently considered to be a fileout of a single class', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '     category of the same name as the file!', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '   If no <Program> is specified each given .st file will be compiled into', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '   a matching .js file. Otherwise a <Program>.js file is linked together based on', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '   the given options:', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '  -l library1,library2', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '     Add listed JavaScript libraries in listed order.', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '     Libraries are not separated by spaces or end with .js.', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '  -L directory1,directory2', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '     Add listed directories to the library search path.', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '     The order of processing is:', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '     1. current directory', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '     2. directories specified by -L', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '     3. $AMBER', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '  -g jsGlobal1,jsGlobal2', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '     Comma separated list of JS global variable names.', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '     The names are added to a list containing "window", "document" and others.', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '  -m main_class', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '     Add a call to the class method main_class>>main at the end of <Program>.', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '  -M main_file', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '     Add <main_file> at the end of <Program.js> acting as #main.', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '  -n amd_namespace', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '     Export packages with <amd_namespace> as the require.js namespace.', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '     Default value is "amber_core".', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '  -v', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '     Produce a more verbose output.', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '  -D', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '     Specifies the output directory for all generated .js files.', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '     The hierarchy of the input files is not maintaned.', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '     If this option is omitted all generated .js files are placed next to their input files', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '  -s suffix', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '     Add <suffix> to compiled .js files. File.st is then compiled into', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '     File.<suffix>.js.', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '  -S suffix', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '     Use <suffix> for all libraries accessed using -l. This makes it possible', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '     to have multiple flavors of Amber and libraries in the same place.', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '     Example invocations:', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '     Just compile Kernel-Objects.st to Kernel-Objects.js:', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '        amberc Kernel-Objects.st', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '     Compile Hello.st to Hello.js and create complete program called Program.js.', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '     Additionally add a call to the class method Hello>>main:', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '        amberc -m Hello Hello.st Program', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '     Compile Cat1.st and Cat2.st files into corresponding .js files.', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '     Link them with myboot.js and myKernel.js', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '     and merge everything into a complete program named Program.js:', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '        amberc -M main.js myboot.js myKernel.js Cat1.st Cat2.st Program', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    usage.forEach(function (line) { console.log(line); }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }; 
			 |