| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 |
- var os = require('os');
- var path = require('path');
- // get the root folder
- var atomicRoot = path.resolve(__dirname, "../..") + "/";
- // patch in our local node_modules
- process.env.NODE_PATH = atomicRoot + "Build/node_modules/";
- require('module').Module._initPaths();
- var fs = require('fs-extra');
- /// Returns a list of all script packages
- function getScriptPackages() {
- var srcpath = atomicRoot + "Script/Packages/";
- return fs.readdirSync(srcpath).filter(function(file) {
- return fs.statSync(path.join(srcpath, file)).isDirectory() && fs.existsSync(srcpath + "/" + file + "/Package.json");
- });
- }
- // return an object with package name keys and module name lists as values
- function getScriptModules() {
- modules = {};
- var packages = getScriptPackages();
- for (var i in packages) {
- var pkg = JSON.parse(fs.readFileSync(atomicRoot + "Script/Packages/" + packages[i] + "/Package.json"));
- for (var j in pkg.modules) {
- var moduleName = pkg.modules[j];
- if (!modules[pkg.name]) {
- modules[pkg.name] = {
- moduleNames: [],
- bindings: pkg.bindings
- };
- }
- modules[pkg.name].moduleNames.push(moduleName);
- }
- }
- return modules;
- }
- function getGenScriptRootDir() {
- return atomicRoot + "Artifacts/Build/Source/Generated/";
- }
- // Get a list of script source filenames
- function getGenScriptFilenames() {
- var filenames = [];
- var scriptGenRoot = getGenScriptRootDir();
- var modules = getScriptModules();
- for (var pkgName in modules) {
- var module = modules[pkgName];
- // handle JS bindings
- if (!module.bindings || module.bindings.indexOf("JavaScript") != -1) {
- var jsPackageFolder = scriptGenRoot + "Javascript/Packages/" + pkgName + "/";
- // the JS package sources
- filenames.push(jsPackageFolder + "JSPackage" + pkgName + ".cpp");
- for (var i in module.moduleNames) {
- filenames.push(jsPackageFolder + "JSModule" + module.moduleNames[i] + ".cpp");
- }
- }
- // C#
- if (!module.bindings || module.bindings.indexOf("CSharp") != -1) {
- var csPackageFolder = scriptGenRoot + "CSharp/Packages/" + pkgName + "/";
- var csPackageNativeFolder = csPackageFolder + "Native/";
- var csPackageManagedFolder = csPackageFolder + "Managed/";
- // Native Package sources
- filenames.push(csPackageNativeFolder + "CSPackage" + pkgName + ".cpp");
- filenames.push(csPackageNativeFolder + "CSPackage" + pkgName + ".h");
- for (var i in module.moduleNames) {
- filenames.push(csPackageNativeFolder + "CSModule" + module.moduleNames[i] + ".cpp");
- }
- }
- }
- return filenames;
- }
- function createGenScriptFiles() {
- var scriptFiles = getGenScriptFilenames();
- for (var i in scriptFiles) {
- fs.ensureFileSync(scriptFiles[i]);
- }
- }
- function cleanCreateDir(directory) {
- testRemoveDir(directory);
- testCreateDir(directory);
- }
- function testCreateDir(directory) {
- if (fs.existsSync(directory)) {
- fail("Path already exists: " + directory);
- }
- jake.mkdirP(directory);
- if (!fs.existsSync(directory)) {
- fail("Unable to create path: " + directory);
- }
- }
- function testRemoveDir(path) {
- if (fs.existsSync(path)) {
- jake.rmRf(path);
- }
- if (fs.existsSync(path)) {
- fail("Unable to remove path: " + path);
- }
- }
- exports.atomicRoot = atomicRoot;
- exports.artifactsRoot = atomicRoot + "Artifacts/";
- exports.cleanCreateDir = cleanCreateDir;
- exports.testCreateDir = testCreateDir;
- exports.testRemoveDir = testRemoveDir;
- exports.getScriptPackages = getScriptPackages;
- exports.getScriptModules = getScriptModules;
- exports.getGenScriptFilenames = getGenScriptFilenames;
- exports.createGenScriptFiles = createGenScriptFiles;
- exports.getGenScriptRootDir = getGenScriptRootDir;
|