|
@@ -293,7 +293,9 @@ function resolve_kernel(configuration) {
|
|
|
* Returns a Promise object which resolves into the configuration object.
|
|
|
*/
|
|
|
function create_compiler(configuration) {
|
|
|
- var compiler_files = configuration.compiler_libraries.concat(configuration.load);
|
|
|
+ var compiler_files = configuration.compiler_libraries;
|
|
|
+ var include_files = configuration.load;
|
|
|
+ var builder;
|
|
|
return Promise.all(
|
|
|
compiler_files.map(function(file) {
|
|
|
return resolve_js(file, configuration);
|
|
@@ -315,7 +317,7 @@ function create_compiler(configuration) {
|
|
|
)
|
|
|
})
|
|
|
.then(function(files) {
|
|
|
- var builder = createConcatenator();
|
|
|
+ builder = createConcatenator();
|
|
|
builder.add('(function() {');
|
|
|
builder.start();
|
|
|
|
|
@@ -328,8 +330,43 @@ function create_compiler(configuration) {
|
|
|
builder.addId(match[1]);
|
|
|
}
|
|
|
});
|
|
|
+ })
|
|
|
+ .then(function () { return Promise.all(
|
|
|
+ include_files.map(function(file) {
|
|
|
+ return resolve_js(file, configuration);
|
|
|
+ })
|
|
|
+ ); })
|
|
|
+ .then(function(includeFilesArray) {
|
|
|
+ return Promise.all(
|
|
|
+ includeFilesArray.map(function(file) {
|
|
|
+ return new Promise(function(resolve, reject) {
|
|
|
+ console.log('Loading library file: ' + file);
|
|
|
+ fs.readFile(file, function(err, data) {
|
|
|
+ if (err)
|
|
|
+ reject(err);
|
|
|
+ else
|
|
|
+ resolve(data);
|
|
|
+ });
|
|
|
+ });
|
|
|
+ })
|
|
|
+ )
|
|
|
+ })
|
|
|
+ .then(function(files) {
|
|
|
+ var loadIds = [];
|
|
|
+ files.forEach(function(data) {
|
|
|
+ // data is an array where index 0 is the error code and index 1 contains the data
|
|
|
+ builder.add(data);
|
|
|
+ // matches and returns the "module_id" string in the AMD definition: define("module_id", ...)
|
|
|
+ var match = ('' + data).match(/^define\("([^"]*)"/);
|
|
|
+ if (match) {
|
|
|
+ loadIds.push(match[1]);
|
|
|
+ }
|
|
|
+ });
|
|
|
// store the generated smalltalk env in configuration.{vm,globals}
|
|
|
builder.finish('configuration.vm = vm; configuration.globals = globals;');
|
|
|
+ loadIds.forEach(function (id) {
|
|
|
+ builder.add('requirejs("' + id + '");');
|
|
|
+ });
|
|
|
builder.add('})();');
|
|
|
|
|
|
eval(builder.toString());
|
|
@@ -469,7 +506,7 @@ function compose_js_files(configuration) {
|
|
|
var programFile = configuration.program;
|
|
|
if (undefined === programFile) {
|
|
|
resolve(configuration);
|
|
|
- return;
|
|
|
+ return;
|
|
|
}
|
|
|
if (undefined !== configuration.output_dir) {
|
|
|
programFile = path.join(configuration.output_dir, programFile);
|