Browse Source

amberc.js: add support for specifying an ouput directory for the generated .js files

Manfred Kroehnert 11 năm trước cách đây
mục cha
commit
9ca8ec6c05
1 tập tin đã thay đổi với 14 bổ sung6 xóa
  1. 14 6
      bin/amberc.js

+ 14 - 6
bin/amberc.js

@@ -118,6 +118,7 @@ var createDefaults = function(amber_dir, finished_callback){
 		'compile': [],
 		'compiled': [],
 		'program': undefined,
+		'output_dir': undefined,
 		'verbose': false,
 		'finished_callback': finished_callback
 	};
@@ -471,12 +472,15 @@ AmberC.prototype.category_export = function() {
 	// export categories as .js
 	async_map(defaults.compile, function(stFile, callback) {
 		var category = path.basename(stFile, '.st');
-		var stFilePath = path.dirname(stFile);
+		var jsFilePath = defaults.output_dir;
+		if (undefined === jsFilePath) {
+			jsFilePath = path.dirname(stFile);
+		}
 		var jsFile = category + defaults.suffix_used + '.js';
-		jsFile = path.join(stFilePath, jsFile);
+		jsFile = path.join(jsFilePath, jsFile);
 		defaults.compiled.push(jsFile);
 		var jsFileDeploy = category + defaults.suffix_used + '.deploy.js';
-		jsFileDeploy = path.join(stFilePath, jsFileDeploy);
+		jsFileDeploy = path.join(jsFilePath, jsFileDeploy);
 
 		console.log('Exporting ' + (defaults.deploy ? '(debug + deploy)' : '(debug)')
 			+ ' category ' + category + ' as ' + jsFile
@@ -523,11 +527,15 @@ AmberC.prototype.verify = function() {
 AmberC.prototype.compose_js_files = function() {
 	var defaults = this.defaults;
 	var self = this;
-	if (undefined === defaults.program) {
+	var programFile = defaults.program;
+	if (undefined === programFile) {
 		self.optimize();
 		return;
 	}
 	var program_files = [];
+	if (undefined !== defaults.output_dir) {
+		programFile = path.join(defaults.output_dir, programFile);
+	}
 
 	if (0 !== defaults.libraries.length) {
 		console.log('Collecting libraries: ' + defaults.libraries);
@@ -544,9 +552,9 @@ AmberC.prototype.compose_js_files = function() {
 		program_files.push(defaults.init);
 	}
 
-	console.ambercLog('Writing program file: %s.js', defaults.program);
+	console.ambercLog('Writing program file: %s.js', programFile);
 
-	var fileStream = fs.createWriteStream(defaults.program + defaults.suffix_used + '.js');
+	var fileStream = fs.createWriteStream(programFile + defaults.suffix_used + '.js');
 	fileStream.on('error', function(error) {
 		fileStream.end();
 		console.ambercLog(error);