ns-export
Version:
Export Record Type metadata to JSON
112 lines (95 loc) • 3.27 kB
JavaScript
;
var yarr = require('yargs')
.usage('Usage: nsexport <command> [options]')
.command('<recType> <id>', 'Record Type and ID, "nsexport customrecord_japo 122"')
.command('<file>', 'JSON Array of Record Types and IDs, "nsexport ./records.json"')
.demand(1)
//.demand(2)
.describe('account','Account id.').alias('account','a')
.describe('bundle', 'Bundle ID').alias('bundle', 'b')
.describe('depth','Depth of join with others Records. Default: 1.').alias('depth','d')
.describe('email','Account email.').alias('email','e')
.describe('password','Account password.').alias('password','p')
.describe('show-inactive', 'Set "Show Inactive" Configuration. Default: false').alias('show-inactive', 'si')
.argv;
var child = require('child_process'),
//nsconfig = require('nsconfig'),
fs = require('fs'),
spawn = child.spawn;
var bin = __dirname + '/node_modules/.bin/phantomjs',
args = [__dirname + '/index.js', __dirname],
//config = nsconfig({}, true),
//configObj = JSON.stringify(config),
dir = '.ns-exports';
if (!fs.existsSync(dir)) {
fs.mkdirSync(dir);
}
var nsconfig = require('nsconfig'),
custom_params = [
{name: 'hostname'},
{name : 'quiz' , required : true}
],
config = nsconfig({}, custom_params);
// #####################################
// read command line options
// #####################################
var record = yarr._[0],
id = yarr._[1];
for (var it in yarr) {
if (yarr[it]) {
config[it] = yarr[it];
}
}
if (!config.downloads || (record && id)) {
config.downloads = [];
if (record === '*') {
config.downloads = [];
} else if (record && id) {
('' + id).split(',').forEach(function(id) {
config.downloads.push({
record: record,
id: id
});
});
} else {
var hasDot = record.indexOf('./') === 0,
hasSpt = record.indexOf('/') === 0,
file = hasDot ? record : hasSpt ? '.' + record : './' + record;
if (hasDot || hasSpt || fs.existsSync(file)) {
config.downloads = [];
var content = fs.readFileSync(file, 'utf8');
JSON.parse(content).forEach(function(data) {
if (Array.isArray(data.id)) {
data.id.forEach(function(id) {
config.downloads.push({
record: data.record,
id: id
});
});
} else {
config.downloads.push(data);
}
});
} else {
config.downloads = [{
record: record
}];
}
}
}
var configObj = JSON.stringify(config);
fs.writeFileSync(dir + '/nsconfig.json', configObj, 'utf8');
var cspr = spawn(bin, args);
cspr.stdout.on('data', function (data) {
var buff = new Buffer(data);
console.log(buff.toString('utf8').trim());
});
cspr.stderr.on('data', function (data) {
data += '';
console.log(data.replace('\n', '\nstderr: '));
});
cspr.on('exit', function (code) {
process.exit(code);
console.log('\n');
});