Browse Source

amberc.js: collect all files before writing them out

Manfred Kroehnert 12 years ago
parent
commit
16adfefed3
1 changed files with 29 additions and 32 deletions
  1. 29 32
      bin/amberc.js

+ 29 - 32
bin/amberc.js

@@ -316,16 +316,14 @@ function compile() {
 		}
 	});
 	
-	if (!defaults.closure_parts) {
-		return;
+	if (defaults.closure_parts) {
+		console.log('Compiling all js files using Google closure compiler.');
+		var allJsFiles = defaults.compiled.concat(defaults.libraries);
+		allJsFiles.forEach(function(file) {
+			var minifiedName = path.basename(file, '.js') + '.min.js';
+			closure_compile(file, minifiedName);
+		});
 	}
-	
-	console.log('Compiling all js files using Google closure compiler.');
-	var allJsFiles = defaults.compiled.concat(defaults.libraries);
-	allJsFiles.forEach(function(file) {
-		var minifiedName = path.basename(file, '.js') + '.min.js';
-		closure_compile(file, minifiedName);
-	});
 
 	if (undefined !== defaults.program) {
 		compose_js_files();
@@ -334,50 +332,49 @@ function compile() {
 
 
 function compose_js_files() {
-	var fileStream = fs.createWriteStream(defaults.program + '.js');
-	fileStream.on('error', function(error) {
-		console.log(error);
-	});
+	var program_files = [];
 
 	if (undefined !== defaults.libraries) {
 		console.log('Collecting libraries: ' + defaults.libraries);
-		defaults.libraries.forEach(function(file) {
-			fileStream.write(fs.readFileSync(file));
-		});
+		program_files.push.apply(program_files, defaults.libraries);
 	}
 
 	if (undefined !== defaults.compiled) {
 		console.log('Collecting compiled files: ' + defaults.compiled);
-		defaults.compiled.forEach(function(file) {
-			fileStream.write(fs.readFileSync(file));
-		});
+		program_files.push.apply(program_files, defaults.compiled);
 	}
 
 	if (undefined !== defaults.init) {
-		console.log('Checking for init file: ' + defaults.init);
-		if (!path.existsSync(defaults.init)) {
-			throw(new Error('Can not find init file ' + defaults.init));
-		}
 		console.log('Adding initializer ' + defaults.init);
-		fileStream.write(fs.readFileSync(defaults.init));
+		program_files.push(defaults.init);
 	}
 
+	console.log('Writing program file: %s.js', defaults.program);
+
+	var fileStream = fs.createWriteStream(defaults.program + '.js');
+	fileStream.on('error', function(error) {
+		console.log(error);
+	});
+
+	program_files.forEach(function(file) {
+		console.log('Checking : ' + file);
+		if(path.existsSync(file)) {
+			fileStream.write(fs.readFileSync(file));
+		} else {
+			throw(new Error('Can not find file ' + file));
+		}
+	});
 	if (undefined !== defaults.main) {
 		console.log('Adding call to: %s>>main', defaults.main);
 		fileStream.write('smalltalk.' + defaults.main + '._main()');
 	}
-	
-	if (undefined !== defaults.mainfile) {
-		console.log('Checking for main file: ' + defaults.mainfile);
-		if (!path.existsSync(defaults.mainFile)) {
-			throw(new Error('Can not find main file ' + defaults.mainfile));
-		}
+
+	if (undefined !== defaults.mainfile && path.existsSync(defaults.mainfile)) {
 		console.log('Adding main file: ' + defaults.mainfile);
 		fileStream.write(fs.readFileSync(defaults.mainfile));
 	}
 
-	console.log('Writing program file: %s.js', defaults.program);
-	fileStream.end()
+	fileStream.end();
 	console.log('Done.');
 
 	if (!defaults.closure_full) {