|  | @@ -148,9 +148,7 @@ AmberC.prototype.main = function(configuration, finished_callback) {
 | 
	
		
			
				|  |  |  	.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(compile, logError)
 | 
	
		
			
				|  |  |  	.then(category_export, logError)
 | 
	
		
			
				|  |  |  	.then(verify, logError)
 | 
	
		
			
				|  |  |  	.then(compose_js_files, logError)
 | 
	
	
		
			
				|  | @@ -378,59 +376,55 @@ function create_compiler(configuration) {
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -/**
 | 
	
		
			
				|  |  | - * Read the content of all files into memory.
 | 
	
		
			
				|  |  | - * Returns a Promise.all() object.
 | 
	
		
			
				|  |  | - */
 | 
	
		
			
				|  |  | -function readFiles(configuration) {
 | 
	
		
			
				|  |  | -	return Promise.all(
 | 
	
		
			
				|  |  | -		configuration.compile.map(function(stFile) {
 | 
	
		
			
				|  |  | -			return new Promise(function(resolve, reject) {
 | 
	
		
			
				|  |  | -				if (/\.st/.test(stFile)) {
 | 
	
		
			
				|  |  | -					console.ambercLog('Importing: ' + stFile);
 | 
	
		
			
				|  |  | -					fs.readFile(stFile, 'utf8', function(err, data) {
 | 
	
		
			
				|  |  | -						if (!err)
 | 
	
		
			
				|  |  | -							resolve(data);
 | 
	
		
			
				|  |  | -						else
 | 
	
		
			
				|  |  | -							reject(Error('Could not import: ' + stFile));
 | 
	
		
			
				|  |  | -					});
 | 
	
		
			
				|  |  | -				}
 | 
	
		
			
				|  |  | -			});
 | 
	
		
			
				|  |  | -		})
 | 
	
		
			
				|  |  | -	);
 | 
	
		
			
				|  |  | -};
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  /**
 | 
	
		
			
				|  |  |   * Compile all given .st files by importing them.
 | 
	
		
			
				|  |  | - * Captures the configuration object in a closure and returns a function that
 | 
	
		
			
				|  |  | - * does the actual work and returns a Promise.all() object.
 | 
	
		
			
				|  |  | + * Returns a Promise object that resolves into configuration.
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  |  function compile(configuration) {
 | 
	
		
			
				|  |  |  	// return function which does the actual work
 | 
	
		
			
				|  |  |  	// and use the compile function to reference the configuration object
 | 
	
		
			
				|  |  | -	return function(fileContents) {
 | 
	
		
			
				|  |  | -		console.log('Compiling collected .st files');
 | 
	
		
			
				|  |  | -		// import/compile content of .st files
 | 
	
		
			
				|  |  | -		return Promise.all(
 | 
	
		
			
				|  |  | -			fileContents.map(function(code) {
 | 
	
		
			
				|  |  | +	return new Promise(function(resolve, reject) {
 | 
	
		
			
				|  |  | +		Promise.all(
 | 
	
		
			
				|  |  | +			configuration.compile.map(function(stFile) {
 | 
	
		
			
				|  |  |  				return new Promise(function(resolve, reject) {
 | 
	
		
			
				|  |  | -					var importer = configuration.smalltalk.Importer._new();
 | 
	
		
			
				|  |  | -					try {
 | 
	
		
			
				|  |  | -						importer._import_(code._stream());
 | 
	
		
			
				|  |  | -						resolve(true);
 | 
	
		
			
				|  |  | -					} catch (ex) {
 | 
	
		
			
				|  |  | -						reject(Error("Import error in section:\n" +
 | 
	
		
			
				|  |  | -							importer._lastSection() + "\n\n" +
 | 
	
		
			
				|  |  | -							"while processing chunk:\n" +
 | 
	
		
			
				|  |  | -							importer._lastChunk() + "\n\n" +
 | 
	
		
			
				|  |  | -							(ex._messageText && ex._messageText() || ex.message || ex))
 | 
	
		
			
				|  |  | -						);
 | 
	
		
			
				|  |  | +					if (/\.st/.test(stFile)) {
 | 
	
		
			
				|  |  | +						console.ambercLog('Importing: ' + stFile);
 | 
	
		
			
				|  |  | +						fs.readFile(stFile, 'utf8', function(err, data) {
 | 
	
		
			
				|  |  | +							if (!err)
 | 
	
		
			
				|  |  | +								resolve(data);
 | 
	
		
			
				|  |  | +							else
 | 
	
		
			
				|  |  | +								reject(Error('Could not import: ' + stFile));
 | 
	
		
			
				|  |  | +						});
 | 
	
		
			
				|  |  |  					}
 | 
	
		
			
				|  |  |  				});
 | 
	
		
			
				|  |  |  			})
 | 
	
		
			
				|  |  | -		);
 | 
	
		
			
				|  |  | -	};
 | 
	
		
			
				|  |  | +		)
 | 
	
		
			
				|  |  | +		.then(function(fileContents) {
 | 
	
		
			
				|  |  | +			console.log('Compiling collected .st files');
 | 
	
		
			
				|  |  | +			// import/compile content of .st files
 | 
	
		
			
				|  |  | +			Promise.all(
 | 
	
		
			
				|  |  | +				fileContents.map(function(code) {
 | 
	
		
			
				|  |  | +					return new Promise(function(resolve, reject) {
 | 
	
		
			
				|  |  | +						var importer = configuration.smalltalk.Importer._new();
 | 
	
		
			
				|  |  | +						try {
 | 
	
		
			
				|  |  | +							importer._import_(code._stream());
 | 
	
		
			
				|  |  | +							resolve(true);
 | 
	
		
			
				|  |  | +						} catch (ex) {
 | 
	
		
			
				|  |  | +							reject(Error("Import error in section:\n" +
 | 
	
		
			
				|  |  | +								importer._lastSection() + "\n\n" +
 | 
	
		
			
				|  |  | +								"while processing chunk:\n" +
 | 
	
		
			
				|  |  | +								importer._lastChunk() + "\n\n" +
 | 
	
		
			
				|  |  | +								(ex._messageText && ex._messageText() || ex.message || ex))
 | 
	
		
			
				|  |  | +							);
 | 
	
		
			
				|  |  | +						}
 | 
	
		
			
				|  |  | +					});
 | 
	
		
			
				|  |  | +				})
 | 
	
		
			
				|  |  | +			);
 | 
	
		
			
				|  |  | +		})
 | 
	
		
			
				|  |  | +		.then(function() {
 | 
	
		
			
				|  |  | +			resolve(configuration);
 | 
	
		
			
				|  |  | +		});
 | 
	
		
			
				|  |  | +	});
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 |