|
@@ -125,11 +125,10 @@ var createDefaults = function(amber_dir, finished_callback){
|
|
AmberC.prototype.main = function(parameters, finished_callback) {
|
|
AmberC.prototype.main = function(parameters, finished_callback) {
|
|
console.time('Compile Time');
|
|
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;
|
|
var self = this;
|
|
this.check_for_closure_compiler(function(){
|
|
this.check_for_closure_compiler(function(){
|
|
self.collect_files(self.defaults.stFiles, self.defaults.jsFiles)
|
|
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.
|
|
* Process given program options and update defaults values.
|
|
* Followed by check_for_closure_compiler() and then collect_files().
|
|
* 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,
|
|
* Checks if the java executable exists and afterwards,
|
|
* if compiler.jar exists at the path stored in this.closure_jar.
|
|
* if compiler.jar exists at the path stored in this.closure_jar.
|