apiconnect-cli-publish-bluemix
Version:
Plugin for IBM API Connect Developer Toolkit
83 lines (74 loc) • 2.62 kB
JavaScript
/********************************************************* {COPYRIGHT-TOP} ***
* Licensed Materials - Property of IBM
* 5725-Z22, 5725-Z63, 5725-U33, 5725-Z63
*
* (C) Copyright IBM Corporation 2016, 2017
*
* All Rights Reserved.
* US Government Users Restricted Rights - Use, duplication or disclosure
* restricted by GSA ADP Schedule Contract with IBM Corp.
********************************************************** {COPYRIGHT-END} **/
// Node module: apiconnect-cli-publish-bluemix
var Promise = require('bluebird');
var debug = require('debug')('apiconnect-cli-publish-bluemix:bluemixInjection');
var fs = Promise.promisifyAll(require('fs-extra'));
var glob = require('glob');
var path = require('path');
var bluemixInjection = module.exports;
var getListOfFilesFromPattern = function(searchDirectory, pattern) {
return new Promise(function(resolve, reject) {
glob(path.join(searchDirectory, pattern), function(err, files) {
if (!err) {
return resolve(files);
} else {
return reject(err);
}
});
});
};
var modifyJson = function(jsonFile, key, value) {
return fs.readJsonAsync(jsonFile).then(function(jsonData) {
if (typeof jsonData[key] !== 'undefined' && typeof value === 'object') {
for (var field in value) {
jsonData[key][field] = value[field];
}
} else {
jsonData[key] = value;
}
return fs.outputJsonAsync(jsonFile, jsonData);
});
};
var copy = function(sourceFile, destination) {
return fs.ensureDirAsync(destination).then(function() {
var destinationFile = destination + path.basename(sourceFile);
return fs.copyAsync(sourceFile, destinationFile);
});
};
bluemixInjection.copyFiles = function(filesToCopy) {
debug('filesToCopy %j', filesToCopy);
return new Promise(function(resolve, reject) {
var promiseArray = [];
filesToCopy.forEach(function(fileDetail) {
promiseArray.push(copy(fileDetail.sourceFile, fileDetail.destination));
});
Promise.all(promiseArray).then(function() {
resolve();
}).catch(function(error) {
reject(error);
});
});
};
bluemixInjection.insertIntoJsonFiles = function(path, filePattern, key, value) {
debug('insertIntoJsonFiles %j', arguments);
return getListOfFilesFromPattern(path, filePattern).then(function(fileList) {
var promiseArray = [];
fileList.forEach(function(file) {
promiseArray.push(modifyJson(file, key, value));
});
Promise.all(promiseArray).then(function() {
return Promise.resolve();
}).catch(function(error) {
return Promise.reject(error);
});
});
};