private-bower
Version:
A simple private bower registry
82 lines (65 loc) • 2.46 kB
JavaScript
var path = require('path');
var utils = require('../../infrastructure/utils');
var Promise = require('bluebird');
var exec = require('child_process').exec;
module.exports = function RepoCacheBase(options) {
function _getLatestForRepos(pullLatest) {
return new Promise(function(resolve, reject) {
var childDirectories = utils.getChildDirectories(options.repoCacheRoot);
pullLatestForAllRepos(childDirectories)
.then(resolve)
.catch(reject);
});
function pullLatestForAllRepos(childDirectories) {
return new Promise(function(resolve, reject) {
var pullLatestProcesses = [];
childDirectories.forEach(function(directory) {
pullLatestProcesses.push(pullLatest(directory));
});
Promise.all(pullLatestProcesses)
.then(resolve)
.catch(reject);
});
}
}
function _getRepoAccessAddress() {
if(options.publicAccessURL){
return options.publicAccessURL;
}
else {
return options.hostName + ':' + options.port;
}
}
function _removeRepo(repoName) {
var childDirectories = utils.getChildDirectories(options.repoCacheRoot);
if(childDirectories.indexOf(repoName) === -1) {
return;
}
utils.removeDirectory(path.join(options.repoCacheRoot, repoName));
}
function _generateCustomParameters() {
if(!options.parameters) {
return '';
}
var customParameters = '';
for(var prop in options.parameters) {
if(options.parameters.hasOwnProperty(prop)) {
customParameters += ' --{0}'.format(prop);
if(options.parameters[prop] !== '') {
customParameters += '={0}'.format(options.parameters[prop]);
}
}
}
return customParameters;
}
function _shutDown() {
throw new Error('Must implement shutDown function on repoCache');
}
return {
getLatestForRepos: _getLatestForRepos,
getRepoAccessAddress: _getRepoAccessAddress,
removeRepo: _removeRepo,
generateCustomParameters: _generateCustomParameters,
shutDown: _shutDown
};
};