|  | @@ -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);
 |