cacert-testmgr/external/ZendFramework-1.9.5/externals/dojo/util/buildscripts/makeDojoJsWeb.js

104 lines
3.4 KiB
JavaScript
Raw Normal View History

//START of the "main" part of the script.
//This is the entry point for this script file.
load("buildUtil.js");
load("buildUtilXd.js");
var result = "ERROR";
var buildDirectory = new String(arguments[0]);
var depList = new String(arguments[1]);
var provideList = new String(arguments[2]);
var version = new String(arguments[3]);
var xdDojoUrl = new String(arguments[4]);
depList = depList.split(",");
//Check if there were no provideList (the caller can send string "null"
//to indicate that the command line parameter is empty. We need some string
//to make sure all the arguments are in the right spot.
if(provideList == "null"){
provideList = "[]";
}else{
provideList = provideList.split(",");
provideList = '["' + provideList.join('","') + '"]';
}
var dependencyResult;
eval('dependencyResult = {depList: ["' + depList.join('","') + '"], provideList: ' + provideList + '};');
//Make sure we are dealing with JS files and that the paths are not outside
//of the working area. Do this to discourage fetching arbitrary files from
//the server.
var deps = dependencyResult.depList;
var isInputOk = true;
for(var i = 0; i < deps.length; i++){
var matches = deps[i].match(/\.\./g);
if((matches && matches.length > 1) || !deps[i].match(/\.js$/) || deps[i].indexOf(0) == '/'){
print("Error: Invalid file set.");
isInputOk = false;
break;
}
}
if(isInputOk){
//Load dojo (needed for string interning)
djConfig={
baseRelativePath: "../"
};
load('../dojo.js');
dojo.require("dojo.string.extras");
dojo.require("dojo.crypto.MD5");
var buildSigDir = dojo.crypto.MD5.compute(depList.sort().join(","), dojo.crypto.outputTypes.Hex);
try{
//xxx createLayerContents is broken: need kwargs? it is optional but probably should provide it.
var contents = buildUtil.createLayerContents(dependencyResult.depList, dependencyResult.provideList, version);
var compressedContents = "";
var prefixes = [["dojo", "src"]];
//Make sure any dojo.requireLocalization calls are modified
//so that they inform the loader of valid locales that can be loaded.
contents = buildUtil.modifyRequireLocalization(contents, prefixes);
//Intern strings.
contents = buildUtil.interningRegexpMagic("xdomain", contents, djConfig.baseRelativePath, prefixes, [], true);
//Set the xdomain dojo url
if(xdDojoUrl){
contents = buildUtilXd.setXdDojoConfig(contents, xdDojoUrl);
}
//Compress code.
compressedContents = buildUtil.optimizeJs("dojo.js", contents, "", "shrinksafe");
//Add copyright
var copyright = fileUtil.readFile("copyright.txt");
var buildNotice = fileUtil.readFile("build_notice.txt");
contents = copyright + buildNotice + contents;
compressedContents = copyright + buildNotice + compressedContents;
//Prep cache location
var buildCachePath = buildDirectory + "/" + buildSigDir + "/";
//Create needed directories for cache location.
var dirFile = new java.io.File(buildCachePath + "compressed");
var dirsOk = dirFile.mkdirs();
result = "dirFile: " + dirFile.getAbsolutePath() + ", dirsOK: " + dirsOk;
//Create build contents file
var buildContents = dependencyResult.provideList.sort().join("\n");
//Save files to disk
fileUtil.saveUtf8File(buildCachePath + "dojo.js", contents);
fileUtil.saveUtf8File(buildCachePath + "compressed/dojo.js", compressedContents);
fileUtil.saveUtf8File(buildCachePath + "build.txt", buildContents);
result = "OK";
}catch(e){
result = "ERROR: " + e;
}
print(result);
}