|
@@ -134,43 +134,26 @@ AmberC.prototype.main = function(configuration, finished_callback) {
|
|
|
}
|
|
|
|
|
|
var self = this;
|
|
|
- check_configuration(configuration).then(function(configuration) {
|
|
|
+ check_configuration(configuration)
|
|
|
+ .then(function(configuration) {
|
|
|
configuration.smalltalk = {};
|
|
|
configuration.kernel_libraries = self.kernel_libraries;
|
|
|
configuration.compiler_libraries = self.compiler_libraries;
|
|
|
configuration.amber_dir = self.amber_dir;
|
|
|
return configuration;
|
|
|
- }, function (error) {
|
|
|
- console.log(error);
|
|
|
- })
|
|
|
- .then(collect_st_files)
|
|
|
- .then(collect_js_files)
|
|
|
- .then(resolve_kernel)
|
|
|
- .then(resolve_compiler)
|
|
|
- .then(create_compiler(configuration))
|
|
|
- .then(function(resolve) {
|
|
|
- return configuration;
|
|
|
- })
|
|
|
- .then(readFiles)
|
|
|
- .then(compile(configuration), function(error) {
|
|
|
- console.error(error);
|
|
|
- })
|
|
|
- .then(function() {
|
|
|
- return configuration;
|
|
|
- })
|
|
|
- .then(category_export)
|
|
|
- .then(function(resolve) {
|
|
|
- return configuration;
|
|
|
- }, function(error) {
|
|
|
- console.error(error);
|
|
|
- })
|
|
|
- .then(verify)
|
|
|
- .then(function(resolve) {
|
|
|
- return configuration;
|
|
|
- }, function(error) {
|
|
|
- console.error(error);
|
|
|
- })
|
|
|
- .then(compose_js_files)
|
|
|
+ }, logError)
|
|
|
+ .then(collect_st_files, logError)
|
|
|
+ .then(collect_js_files, logError)
|
|
|
+ .then(resolve_kernel, logError)
|
|
|
+ .then(resolve_compiler, logError)
|
|
|
+ .then(create_compiler(configuration), logError)
|
|
|
+ .then(function() {return configuration;})
|
|
|
+ .then(readFiles, logError)
|
|
|
+ .then(compile(configuration), logError)
|
|
|
+ .then(function() {return configuration;})
|
|
|
+ .then(category_export, logError)
|
|
|
+ .then(verify, logError)
|
|
|
+ .then(compose_js_files, logError)
|
|
|
.then(function() {
|
|
|
console.log = console.ambercLog;
|
|
|
console.timeEnd('Compile Time');
|
|
@@ -178,6 +161,11 @@ AmberC.prototype.main = function(configuration, finished_callback) {
|
|
|
};
|
|
|
|
|
|
|
|
|
+function logError(error) {
|
|
|
+ console.log(error);
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
|
|
|
* Check if the passed in configuration object has sufficient/nonconflicting values.
|
|
|
* Calls reject with an Error object upon failure and resolve(configuration) upon success.
|
|
@@ -451,56 +439,63 @@ function readFiles(configuration) {
|
|
|
|
|
|
|
|
|
* Export compiled categories to JavaScript files.
|
|
|
- * Returns a Promise.all() object.
|
|
|
+ * Returns a Promise() that resolves to configuration.
|
|
|
*/
|
|
|
function category_export(configuration) {
|
|
|
- return Promise.all(
|
|
|
- configuration.compile.map(function(stFile) {
|
|
|
- return new Promise(function(resolve, error) {
|
|
|
- var category = path.basename(stFile, '.st');
|
|
|
- var jsFilePath = configuration.output_dir;
|
|
|
- if (undefined === jsFilePath) {
|
|
|
- jsFilePath = path.dirname(stFile);
|
|
|
- }
|
|
|
- var jsFile = category + configuration.suffix_used + '.js';
|
|
|
- jsFile = path.join(jsFilePath, jsFile);
|
|
|
- configuration.compiled.push(jsFile);
|
|
|
- var smalltalk = configuration.smalltalk;
|
|
|
- var packageObject = smalltalk.Package._named_(category);
|
|
|
- packageObject._transport()._namespace_(configuration.amd_namespace);
|
|
|
- fs.writeFile(jsFile, smalltalk.String._streamContents_(function (stream) {
|
|
|
- smalltalk.AmdExporter._new()._exportPackage_on_(packageObject, stream);
|
|
|
- }), function(err) {
|
|
|
- if (err)
|
|
|
- error(err);
|
|
|
- else
|
|
|
- resolve(true);
|
|
|
+ return new Promise(function(resolve, error) {
|
|
|
+ Promise.all(
|
|
|
+ configuration.compile.map(function(stFile) {
|
|
|
+ return new Promise(function(resolve, error) {
|
|
|
+ var category = path.basename(stFile, '.st');
|
|
|
+ var jsFilePath = configuration.output_dir;
|
|
|
+ if (undefined === jsFilePath) {
|
|
|
+ jsFilePath = path.dirname(stFile);
|
|
|
+ }
|
|
|
+ var jsFile = category + configuration.suffix_used + '.js';
|
|
|
+ jsFile = path.join(jsFilePath, jsFile);
|
|
|
+ configuration.compiled.push(jsFile);
|
|
|
+ var smalltalk = configuration.smalltalk;
|
|
|
+ var packageObject = smalltalk.Package._named_(category);
|
|
|
+ packageObject._transport()._namespace_(configuration.amd_namespace);
|
|
|
+ fs.writeFile(jsFile, smalltalk.String._streamContents_(function (stream) {
|
|
|
+ smalltalk.AmdExporter._new()._exportPackage_on_(packageObject, stream);
|
|
|
+ }), function(err) {
|
|
|
+ if (err)
|
|
|
+ error(err);
|
|
|
+ else
|
|
|
+ resolve(true);
|
|
|
+ });
|
|
|
});
|
|
|
- });
|
|
|
- })
|
|
|
- );
|
|
|
+ })
|
|
|
+ ).then(function() {
|
|
|
+ resolve(configuration);
|
|
|
+ });
|
|
|
+ });
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
* Verify if all .st files have been compiled.
|
|
|
- * Returns a Promise.all() object.
|
|
|
+ * Returns a Promise() that resolves to configuration.
|
|
|
*/
|
|
|
function verify(configuration) {
|
|
|
console.log('Verifying if all .st files were compiled');
|
|
|
-
|
|
|
- return Promise.all(
|
|
|
- configuration.compiled.map(function(file) {
|
|
|
- return new Promise(function(resolve, error) {
|
|
|
- fs.exists(file, function(exists) {
|
|
|
- if (exists)
|
|
|
- resolve(true);
|
|
|
- else
|
|
|
- error(Error('Compilation failed of: ' + file));
|
|
|
+ return new Promise(function(resolve, error) {
|
|
|
+ Promise.all(
|
|
|
+ configuration.compiled.map(function(file) {
|
|
|
+ return new Promise(function(resolve, error) {
|
|
|
+ fs.exists(file, function(exists) {
|
|
|
+ if (exists)
|
|
|
+ resolve(true);
|
|
|
+ else
|
|
|
+ error(Error('Compilation failed of: ' + file));
|
|
|
+ });
|
|
|
});
|
|
|
- });
|
|
|
- })
|
|
|
- );
|
|
|
+ })
|
|
|
+ ).then(function() {
|
|
|
+ resolve(configuration);
|
|
|
+ });
|
|
|
+ });
|
|
|
};
|
|
|
|
|
|
|