Forráskód Böngészése

Merge remote-tracking branch 'gero3/dev' into dev

Mr.doob 13 éve
szülő
commit
6d58c9ed5e
2 módosított fájl, 58 hozzáadás és 169 törlés
  1. 57 168
      utils/build.js
  2. 1 1
      utils/package.json

+ 57 - 168
utils/build.js

@@ -1,176 +1,65 @@
 var fs = require("fs");
 var fs = require("fs");
 var path = require("path");
 var path = require("path");
-var argsparser =  require( "argsparser" );
+var argparse =  require( "argparse" );
 var uglify = require("uglify-js");
 var uglify = require("uglify-js");
-
-
-function merge(files){
-	"use strict";
-	var buffer = [];
-	for (var i = 0,il = files.length;i<il;i++){
-		var fileName = path.join("src", files[i]);
-		buffer.push(fs.readFileSync(fileName,'utf8'));
-	}
-	
-	return buffer.join("");
-
-}
-
-function output(text, filename){
-	"use strict";
-    var file = path.join('build', filename);
-    fs.writeFileSync(file,text,'utf8');
-}
-
-
-function compress(text, fname_externs){
-	/*
-
-	externs = ""
-	if fname_externs:
-		externs = "--externs %s.js" % fname_externs
-
-	in_tuple = tempfile.mkstemp()
-	with os.fdopen(in_tuple[0], 'w') as handle:
-		handle.write(text)
-
-	out_tuple = tempfile.mkstemp()
-
-	os.system("java -jar compiler/compiler.jar --warning_level=VERBOSE --jscomp_off=globalThis --jscomp_off=checkTypes --externs externs_common.js %s --language_in=ECMASCRIPT5_STRICT --js %s --js_output_file %s" % (externs, in_tuple[1], out_tuple[1]))
-
-	with os.fdopen(out_tuple[0], 'r') as handle:
-		compressed = handle.read()
-
-	os.unlink(in_tuple[1])
-	os.unlink(out_tuple[1])
-
-	return compressed*/
-	"use strict";	
-	return uglify(text);
-}
-
-function addHeader(text, endFilename){
-	"use strict";
-	return "// " + endFilename + " - http://github.com/mrdoob/three.js\n" + text;
-	
-}
-
-function makeDebug(text){
-	"use strict";
-	var position = 0;
-	while (true){
-		position = text.indexOf("/* DEBUG", position);
-		if (position == -1){
-			break;
-		}
-		text = text.substring(0,position) + text.substring(position+8);
-		position = text.find("*/", position);
-		text = text.substring(0,position) + text.substring(position+2);
-	}
-	return text;
-}
-
-function buildLib(files, debug, minified, filename, fname_externs){
-	"use strict";
-	var text = merge(files);
-
-	if (debug){
-		text = makeDebug(text);
-		filename = filename + 'Debug';
-	}
-	
-	var folder;
-	if (filename == "Three"){
-		folder = '';
-	} else {
-		folder = 'custom/';
-	}
-
-	filename = filename + '.js';
-
-	//print("=" * 40)
-	console.log("========================================");
-	console.log("Compiling " + filename);
-	//print("=" * 40)
-	console.log("========================================");
-
-	if (minified){
-		text = compress(text, fname_externs);
-	}
-
-	output(addHeader(text, filename), folder + filename);
-
-}
-
-function buildIncludes(files, filename){
-	"use strict";
-	//var template = "\t\t<script src='../src/%s'></script>";
-	//var text = "\n".join(template % f for f in files)
-	var text = [];
-	for (var i = 0,il = files.length;i<il;i++){
-		text.push("\t\t<script src='../src/" + files[i] + "'></script>");
-	}
-	
-	output(text.join("\n"), filename + '.js');
-}
-
-function getFileNames(){
-	"use strict";
-	var fileName = "utils/files.json";
-	var data = JSON.parse(fs.readFileSync(fileName,'utf8'));	
-	return data;
-}
-
-function parse_args(){
-	"use strict";
-	//parse 
-	var returnValue = argsparser.parse();
-	/*
-	# If no arguments have been passed, show the help message and exit
-	if len(sys.argv) == 1:
-		parser.print_help()
-		sys.exit(1)
-*/
-	for (var i in returnValue){
-		if (i.substring(0,2) == "--"){
-			returnValue[i.substring(2)] = returnValue[i];
-			delete returnValue[i];
-		} else {
-			delete returnValue[i];
-		}
-	}
-	return returnValue;
-}
+var spawn = require('child_process').spawn;
 
 
 function main(){
 function main(){
-	"use strict";
-	var args = parse_args();
-	var debug = args.debug;
-	var minified = args.minified;
-	var files = getFileNames();
-
-	var config = [
-	['Three', 'includes', '', files["common"].concat(files["extras"]), args.common],
-	['ThreeCanvas', 'includes_canvas', '', files["canvas"], args.canvas],
-	['ThreeWebGL', 'includes_webgl', '', files["webgl"], args.webgl],
-	['ThreeExtras', 'includes_extras', 'externs_extras', files["extras"], args.extras]
-	];
-
-
-	for (var i = 0,il = config.length;i<il;i++){
-		var chosenConfig = config[i],
-			fname_lib = chosenConfig[0], 
-			fname_inc = chosenConfig[1], 
-			fname_externs = chosenConfig[2], 
-			files = chosenConfig[3], 
-			enabled = chosenConfig[4];
-		if (enabled || args.all){
-			buildLib(files, debug, minified, fname_lib, fname_externs);
-			if (args.includes){
-				buildIncludes(files, fname_inc);
-			}
-		}
-	}
+    "use strict";
+    var parser = new argparse.ArgumentParser();
+    parser.addArgument(['--include'], {"action":'append', 'required':true});
+    parser.addArgument(['--externs'], {"action":'append', "defaultValue":['./externs/common.js']});
+    parser.addArgument(['--minify'], {"action":'storeTrue', "defaultValue":false});
+    parser.addArgument(['--output'], {"defaultValue":'../build/three.js'});   
+    
+    
+	var args = parser.parseArgs();
+    
+    var output = args.output;
+    console.log(' * Building ' + output);
+    
+    console.dir(args);
+    
+    var buffer = [];
+    for (var i = 0;i < args.include.length;i++){
+        
+        var files = JSON.parse(fs.readFileSync('./includes/' + args.include[i] + '.json', 'utf8'));
+        for (var file = 0;file < files.length;file++){
+            buffer.push(fs.readFileSync(files[file], 'utf8'));
+        }
+    }
+    console.log(buffer.length);
+    var temp = buffer.join("");
+    
+    if (!args.minify){
+        fs.writeFileSync(output,temp,'utf8');
+    } else {
+        
+        fs.writeFileSync(output,uglify(temp),'utf8');
+        
+//        An attempt to get the closure minifier working
+
+//        var externs = ' --externs ' + args.externs.join();
+//        console.log(externs);
+//        var temppath = output + ".tmp";
+//        fs.writeFileSync(temppath,temp,'utf8');
+//        var java = spawn("java -jar ./compiler/compiler.jar --warning_level=VERBOSE --jscomp_off=globalThis " + externs + " --jscomp_off=checkTypes --language_in=ECMASCRIPT5_STRICT --js " + temppath + "  --js_output_file " + output);
+//        java.stdout.on('data', function (data) {
+//            console.log(data);
+//        });
+//        java.stderr.on('data', function (data) {
+//          console.log('java stderr: ' + data);
+//        });
+//        java.on('exit', function (code) {
+//            if (code !== 0) {
+//                console.log('java process exited with code ' + code);
+//            }
+//        });
+
+
+        
+    
+    }
 }
 }
 main();
 main();
 
 

+ 1 - 1
utils/package.json

@@ -10,7 +10,7 @@
 
 
     "devDependencies": {
     "devDependencies": {
     	"uglify-js": "*",
     	"uglify-js": "*",
-    	"argsparser" : "*"
+    	"argparse" : "*"
     },
     },
     
     
     "repository" : {
     "repository" : {