UNPKG

apiconnect-cli-publish-bluemix

Version:

Plugin for IBM API Connect Developer Toolkit

83 lines (74 loc) 2.62 kB
/********************************************************* {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); }); }); };