You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
108 lines
2.4 KiB
108 lines
2.4 KiB
exports.config = function(config){ |
|
// summary: |
|
// This module provides bootstrap configuration for running dojo in node.js |
|
|
|
// any command line arguments with the load flag are pushed into deps |
|
for(var deps = [], args = [], i = 0; i < process.argv.length; i++){ |
|
var arg = (process.argv[i] + "").split("="); |
|
if(arg[0] == "load"){ |
|
deps.push(arg[1]); |
|
}else if(arg[0] == "mapPackage") { |
|
var parts = arg[1].split(":"), |
|
name = parts[0], |
|
location=parts[1], |
|
isPrexisting = false; |
|
|
|
for (var j = 0; j < config.packages.length; j++) { |
|
var pkg = config.packages[j]; |
|
if (pkg.name === name) { |
|
pkg.location = location; |
|
isPrexisting = true; |
|
break; |
|
} |
|
} |
|
|
|
if (!isPrexisting) { |
|
config.packages.push({ |
|
name: name, |
|
location: location |
|
}); |
|
} |
|
}else{ |
|
args.push(arg); |
|
} |
|
} |
|
|
|
var fs = require("fs"); |
|
|
|
// make sure global require exists |
|
//if (typeof global.require=="undefined"){ |
|
// global.require= {}; |
|
//} |
|
|
|
// reset the has cache with node-appropriate values; |
|
var hasCache = { |
|
"host-node":1, |
|
"host-browser":0, |
|
"dom":0, |
|
"dojo-has-api":1, |
|
"dojo-xhr-factory":0, |
|
"dojo-inject-api":1, |
|
"dojo-timeout-api":0, |
|
"dojo-trace-api":1, |
|
"dojo-dom-ready-api":0, |
|
"dojo-publish-privates":1, |
|
"dojo-sniff":0, |
|
"dojo-loader":1, |
|
"dojo-test-xd":0, |
|
"dojo-test-sniff":0 |
|
}; |
|
for(var p in hasCache){ |
|
config.hasCache[p] = hasCache[p]; |
|
} |
|
|
|
var vm = require('vm'), |
|
path = require('path'); |
|
|
|
// reset some configuration switches with node-appropriate values |
|
var nodeConfig = { |
|
baseUrl: path.dirname(process.argv[1]), |
|
commandLineArgs:args, |
|
deps:deps, |
|
timeout:0, |
|
|
|
// TODO: really get the locale |
|
locale:"en-us", |
|
|
|
loaderPatch: { |
|
log:function(item){ |
|
// define debug for console messages during dev instead of console.log |
|
// (node's heavy async makes console.log confusing sometimes) |
|
var util = require("util"); |
|
util.debuglog(util.inspect(item)); |
|
}, |
|
|
|
eval: function(__text, __urlHint){ |
|
return vm.runInThisContext(__text, __urlHint); |
|
}, |
|
|
|
injectUrl: function(url, callback){ |
|
try{ |
|
vm.runInThisContext(fs.readFileSync(url, "utf8"), url); |
|
callback(); |
|
}catch(e){ |
|
this.log("failed to load resource (" + url + ")"); |
|
this.log(e); |
|
} |
|
}, |
|
|
|
getText: function(url, sync, onLoad){ |
|
// TODO: implement async and http/https handling |
|
onLoad(fs.readFileSync(url, "utf8")); |
|
} |
|
} |
|
}; |
|
for(p in nodeConfig){ |
|
config[p] = nodeConfig[p]; |
|
} |
|
};
|
|
|