Initial commit
This commit is contained in:
175
lib/setup/setupVisDebug.js
Normal file
175
lib/setup/setupVisDebug.js
Normal file
@@ -0,0 +1,175 @@
|
||||
'use strict';
|
||||
|
||||
function VisDebug(options) {
|
||||
var fs = require('fs');
|
||||
var tools = require(__dirname + '/../tools.js');
|
||||
var path = require('path');
|
||||
|
||||
// allow use without new operator
|
||||
if (!(this instanceof VisDebug)) return new VisDebug(options);
|
||||
|
||||
options = options || {};
|
||||
|
||||
if (!options.objects) throw 'Invalid arguments: objects is missing';
|
||||
if (!options.processExit) throw 'Invalid arguments: processExit is missing';
|
||||
|
||||
var objects = options.objects;
|
||||
var processExit = options.processExit;
|
||||
|
||||
// upload widget directory to vis directory
|
||||
function uploadWidgets(dir, adapter, path, callback) {
|
||||
var dirs = fs.readdirSync(dir);
|
||||
var count = 0;
|
||||
for (var d = 0; d < dirs.length; d++) {
|
||||
var stat = fs.statSync(dir + '/' + dirs[d]);
|
||||
count++;
|
||||
if (stat.isDirectory()) {
|
||||
uploadWidgets(dir + '/' + dirs[d], adapter, path + '/' + dirs[d], function () {
|
||||
if (!--count && callback) callback();
|
||||
});
|
||||
} else {
|
||||
console.log('Upload "' + dir + '/' + dirs[d] + '"');
|
||||
objects.writeFile(adapter, path + '/' + dirs[d], fs.readFileSync(dir + '/' + dirs[d]), function () {
|
||||
if (!--count && callback) callback();
|
||||
});
|
||||
}
|
||||
}
|
||||
if (!count && callback) callback();
|
||||
}
|
||||
|
||||
this.enableDebug = function (widgetset) {
|
||||
|
||||
if (widgetset) {
|
||||
// Try to find out the adapter directory out of a list of options
|
||||
var adapterDir;
|
||||
var adapterNames2Try = ['vis-' + widgetset, widgetset];
|
||||
if (adapterNames2Try[0] === adapterNames2Try[1]) adapterNames2Try.splice(1, 1);
|
||||
for (var i = 0; i < adapterNames2Try.length; i++) {
|
||||
try {
|
||||
var adapterDir2Try = tools.getAdapterDir(adapterNames2Try[i]);
|
||||
// Query the entry
|
||||
var stats = fs.lstatSync(adapterDir2Try);
|
||||
|
||||
// Is it a directory?
|
||||
if (stats.isDirectory()) {
|
||||
//found it!
|
||||
adapterDir = adapterDir2Try;
|
||||
break;
|
||||
}
|
||||
} catch (e) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if (!adapterDir) throw 'Adapter not found. Tried: ' + adapterNames2Try.join(', ');
|
||||
}
|
||||
|
||||
|
||||
// copy index.html.original to index.html
|
||||
// copy edit.html.original to edit.html
|
||||
// correct appName.json
|
||||
// correct config.js
|
||||
var visDir = __dirname + '/../../node_modules/' + tools.appName + '.vis';
|
||||
if (!fs.existsSync(visDir)) {
|
||||
visDir = __dirname + '/../../node_modules/' + tools.appName.toLowerCase() + '.vis';
|
||||
if (!fs.existsSync(visDir)) {
|
||||
visDir = __dirname + '/../../../' + tools.appName + '.vis';
|
||||
if (!fs.existsSync(visDir)) {
|
||||
visDir = __dirname + '/../../../' + tools.appName.toLowerCase() + '.vis';
|
||||
if (!fs.existsSync(visDir)) {
|
||||
console.error('Cannot find ' + tools.appName + '.vis');
|
||||
processExit(40);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
console.log('Upload "' + path.normalize(visDir + '/www/index.html.original') + '"');
|
||||
var file = fs.readFileSync(visDir + '/www/index.html.original');
|
||||
objects.writeFile('vis', 'index.html', file);
|
||||
|
||||
console.log('Upload "' + path.normalize(visDir + '/www/edit.html.original') + '"');
|
||||
file = fs.readFileSync(visDir + '/www/edit.html.original');
|
||||
objects.writeFile('vis', 'edit.html', file);
|
||||
|
||||
console.log('Modify "' + path.normalize(visDir + '/www/cache.manifest') + '"');
|
||||
file = fs.readFileSync(visDir + '/www/cache.manifest', 'utf8');
|
||||
var n = file.match(/# dev build (\d+)/, '5');
|
||||
n = n[1];
|
||||
file = file.replace('# dev build '+ n, '# dev build ' + (parseInt(n, 10) + 1));
|
||||
objects.writeFile('vis', 'cache.manifest', file);
|
||||
|
||||
file = fs.readFileSync(tools.getConfigFileName(), 'utf8');
|
||||
file = JSON.parse(file);
|
||||
|
||||
var count = 0;
|
||||
if (!file.objects.noFileCache) {
|
||||
file.objects.noFileCache = true;
|
||||
fs.writeFileSync(tools.getConfigFileName(), JSON.stringify(file, null, 2));
|
||||
count++;
|
||||
objects.enableFileCache(false, function (err, actual) {
|
||||
console.log('Disable cache');
|
||||
if (!--count) processExit();
|
||||
});
|
||||
}
|
||||
|
||||
if (widgetset) {
|
||||
count++;
|
||||
objects.readFile('vis', 'js/config.js', null, function (err, data) {
|
||||
data = data.replace(/[\r\n]/g, '');
|
||||
var json = JSON.parse(data.match(/"widgetSets":\s(.*)};/)[1]);
|
||||
var found = false;
|
||||
for (var f = 0; f < json.length; f++) {
|
||||
if (json[f] === widgetset || json[f].name === widgetset) {
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
// if widget-set not found in config.js
|
||||
if (!found) {
|
||||
console.log('Modify config.js');
|
||||
var pckg = JSON.parse(fs.readFileSync(adapterDir + '/io-package.json').toString());
|
||||
if (pckg.native && pckg.native.dependencies && pckg.native.dependencies.length){
|
||||
json.push({
|
||||
name: widgetset,
|
||||
depends: pckg.native.dependencies
|
||||
});
|
||||
} else {
|
||||
json.push(widgetset);
|
||||
}
|
||||
|
||||
data = data.replace(/"widgetSets":\s+.*};/, '"widgetSets": ' + JSON.stringify(json, null, 2) + '};');
|
||||
|
||||
objects.writeFile('vis', 'js/config.js', data, function () {
|
||||
// upload all files into vis
|
||||
console.log('Upload ' + adapterDir + '/widgets');
|
||||
uploadWidgets(adapterDir + '/widgets', 'vis', 'widgets', function () {
|
||||
if (!--count) {
|
||||
// timeoout to print all messages
|
||||
setTimeout(function () {
|
||||
processExit();
|
||||
}, 100);
|
||||
}
|
||||
});
|
||||
});
|
||||
} else {
|
||||
// upload all files into vis
|
||||
console.log('Upload "' + adapterDir + '/widgets' + '"');
|
||||
uploadWidgets(adapterDir + '/widgets', 'vis', 'widgets', function () {
|
||||
if (!--count) {
|
||||
// timeoout to print all messages
|
||||
setTimeout(function () {
|
||||
processExit();
|
||||
}, 100);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
});
|
||||
} else {
|
||||
if (!count) processExit();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
module.exports = VisDebug;
|
||||
Reference in New Issue
Block a user