Browse Source

amberc.js: move amber_dir and smalltalk to defaults object

Manfred Kroehnert 12 years ago
parent
commit
e182fa6de9
1 changed files with 21 additions and 17 deletions
  1. 21 17
      bin/amberc.js

+ 21 - 17
bin/amberc.js

@@ -6,25 +6,22 @@ var path = require('path'),
 	fs = require('fs'),
 	exec = require('child_process').exec;
 
-// the evaluated compiler will be stored in this variable
-// see create_compiler()
-var smalltalk = {};
-
 console.time('Compile Time');
 
-// Get Amber root directory from the location of this script so that
-// we can find the st and js directories etc.
-var AMBER_DIR = path.join(path.dirname(process.argv[1]), '..');
-AMBER_DIR = path.normalize(AMBER_DIR);
-console.log('$AMBER: ' + AMBER_DIR);
-
 var defaults = function() {
+	// Get Amber root directory from the location of this script so that
+	// we can find the st and js directories etc.
+	var amber_dir = path.join(path.dirname(process.argv[1]), '..');
+	amber_dir = path.normalize(amber_dir);
+
 	var kernel_libraries = ['boot', 'Kernel-Objects', 'Kernel-Classes', 'Kernel-Methods', 'Kernel-Collections', 'Kernel-Exceptions', 'Kernel-Transcript', 'Kernel-Announcements'];
 	var compiler_libs = ['parser', 'Compiler', 'Compiler-Exceptions'];//, 'Compiler-Core', 'Compiler-AST', 'Compiler-IR', 'Compiler-Inlining', 'Compiler-Semantic'];
 
 	return {
+		'amber_dir': amber_dir,
+		'smalltalk': {}, // the evaluated compiler will be stored in this variable (see create_compiler)
 		'compiler_libraries': kernel_libraries.concat(compiler_libs),
-		'init': path.join(AMBER_DIR, 'js', 'init.js'),
+		'init': path.join(amber_dir, 'js', 'init.js'),
 		'main': undefined,
 		'mainfile': undefined,
 		'base': kernel_libraries,
@@ -45,6 +42,7 @@ var defaults = function() {
 	};
 }();
 
+
 if (3 > process.argv.length) {
 	usage();
 } else {
@@ -58,6 +56,7 @@ if (3 > process.argv.length) {
 	}
 }
 
+
 function handle_options(optionsArray) {
 	var nonOptions = [];
 	var currentItem = optionsArray.shift();
@@ -117,6 +116,7 @@ function handle_options(optionsArray) {
 	return nonOptions;
 }
 
+
 // print options and exit
 function usage() {
 	console.log('Usage: $0 [-l lib1,lib2...] [-i init_file] [-m main_class] [-M main_file]');
@@ -196,6 +196,7 @@ function usage() {
 	process.exit();
 }
 
+
 function check_for_closure_compiler() {
 	if (!defaults.closure) {
 		return;
@@ -214,9 +215,10 @@ function check_for_closure_compiler() {
 	});
 }
 
+
 function resolve_js(filename) {
 	var jsFile = filename + defaults.loadsuffix + '.js';
-	var amberJsFile = path.join(AMBER_DIR, 'js', jsFile);
+	var amberJsFile = path.join(defaults.amber_dir, 'js', jsFile);
 	console.log('Resolving: ' + jsFile);
 	if (path.existsSync(jsFile)) {
 		return jsFile;
@@ -270,7 +272,7 @@ function collect_files(filesArray) {
 	while (undefined !== currentFile) {
 		var suffix = path.extname(currentFile);
 		var category = path.basename(currentFile, '.st');
-		var amberFile = path.join(AMBER_DIR, 'st', currentFile);
+		var amberFile = path.join(defaults.amber_dir, 'st', currentFile);
 		switch (suffix) {
 			case '.st':
 				if (path.existsSync(currentFile)) {
@@ -295,6 +297,7 @@ function collect_files(filesArray) {
 	};
 }
 
+
 function create_compiler(compilerFilesArray) {
 	// load all files from parameter <-> require?
 	// create compiler in memory -> should be faster
@@ -304,7 +307,7 @@ function create_compiler(compilerFilesArray) {
 		content = content + fs.readFileSync(file);
 	});
 	content = content + 'return smalltalk;})();';
-	smalltalk = eval(content);
+	defaults.smalltalk = eval(content);
 	console.log('Compiler loaded');
 };
 
@@ -398,14 +401,14 @@ function node_compile(filesArray) {
 		if (/\.st/.test(val)) {
 			console.log("Reading file " + val);
 			code = fs.readFileSync(val, "utf8");
-			smalltalk.Importer._new()._import_(code._stream());
+			defaults.smalltalk.Importer._new()._import_(code._stream());
 		} else {
 			console.log("Exporting " + (defaults.deploy ? "(debug + deploy)" : "(debug)") + " category "
 				+ val + " as " + val + defaults.suffix_used + ".js" + (defaults.deploy ? " and " + val + defaults.suffix_used + ".deploy.js" : ""));
-			fs.writeFile(val + defaults.suffix_used + ".js", smalltalk.Exporter._new()._exportPackage_(val), function(err){
+			fs.writeFile(val + defaults.suffix_used + ".js", defaults.smalltalk.Exporter._new()._exportPackage_(val), function(err){
 				if (err) throw err;
 				if (defaults.deploy) {
-					fs.writeFile(val + defaults.suffix_used + ".deploy.js", smalltalk.StrippedExporter._new()._exportPackage_(val), function(err){
+					fs.writeFile(val + defaults.suffix_used + ".deploy.js", defaults.smalltalk.StrippedExporter._new()._exportPackage_(val), function(err){
 						if (err) throw err;
 					});
 				};
@@ -414,6 +417,7 @@ function node_compile(filesArray) {
 	});
 }
 
+
 function closure_compile(sourceFile, minifiedFile) {
 	// exec is asynchronous
 	exec(