mirror of
https://github.com/bower/bower.git
synced 2026-04-24 03:00:19 -04:00
Updated to include multi-endpoint support
This commit is contained in:
@@ -1,4 +1,25 @@
|
||||
module.exports = {
|
||||
directory: 'components',
|
||||
json: 'component.json'
|
||||
}
|
||||
// Bower Config
|
||||
|
||||
// UZI
|
||||
// added searchpath array
|
||||
module.exports = function() {
|
||||
|
||||
var c = require('rc') ('bower', {
|
||||
//Bower Defaults
|
||||
directory: 'components',
|
||||
json: 'component.json',
|
||||
endpoint: 'https://bower.herokuapp.com',
|
||||
searchpath: []
|
||||
});
|
||||
|
||||
// temp for now
|
||||
// rc doesn't read .bowerrc from local so we do it manually
|
||||
var fs = require('fs');
|
||||
if (fs.existsSync('.bowerrc')) {
|
||||
c = JSON.parse(fs.readFileSync('.bowerrc').toString());
|
||||
}
|
||||
|
||||
return c;
|
||||
|
||||
}();
|
||||
// END UZI
|
||||
|
||||
@@ -7,22 +7,57 @@
|
||||
// ==========================================
|
||||
|
||||
var request = require('request');
|
||||
var _ = require('lodash');
|
||||
var _ = require('underscore');
|
||||
var config = require('./config');
|
||||
|
||||
var endpoint = 'https://bower.herokuapp.com/packages';
|
||||
var endpoint = config.endpoint + '/packages';
|
||||
|
||||
if (process.env.HTTP_PROXY) {
|
||||
request = request.defaults({'proxy': process.env.HTTP_PROXY});
|
||||
// UZI
|
||||
// allow for additional endpoints to be used for search and lookup
|
||||
var endpoints = [];
|
||||
endpoints.push(endpoint);
|
||||
if (config.searchpath) {
|
||||
for (var i = 0; i < config.searchpath.length; i++) {
|
||||
endpoints.push(config.searchpath[i] + '/packages');
|
||||
}
|
||||
}
|
||||
// END UZI
|
||||
|
||||
|
||||
|
||||
// UZI
|
||||
// modified so that this now checks each repository and finds the first match
|
||||
exports.lookup = function (name, callback) {
|
||||
request.get(endpoint + '/' + encodeURIComponent(name), function (err, response, body) {
|
||||
if (err || response.statusCode !== 200) return callback(err || new Error(name + ' not found'));
|
||||
callback(err, body && JSON.parse(body).url);
|
||||
});
|
||||
|
||||
var f = function(i) {
|
||||
var endpoint = endpoints[i];
|
||||
console.log("EP: " + endpoint);
|
||||
request.get(endpoint + '/' + encodeURIComponent(name), function (err, response, body) {
|
||||
if (!response) {
|
||||
console.log("No response from endpoint: " + endpoint);
|
||||
}
|
||||
else if (err && response.statusCode !== 200 && response.statusCode !== 404) {
|
||||
return callback(err || new Error(name + ' failed to look up for endpoint: ' + endpoint));
|
||||
}
|
||||
if (response && response.statusCode !== 404) {
|
||||
callback(err, body && JSON.parse(body).url);
|
||||
} else {
|
||||
if (i + 1 < endpoints.length) {
|
||||
f(i+1);
|
||||
} else {
|
||||
return callback(new Error(name + ' not found'));
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
f(0);
|
||||
};
|
||||
// END UZI
|
||||
|
||||
|
||||
|
||||
exports.register = function (name, url, callback) {
|
||||
|
||||
var body = {name: name, url: url};
|
||||
|
||||
request.post({url: endpoint, form: body}, function (err, response, body) {
|
||||
@@ -44,11 +79,47 @@ exports.register = function (name, url, callback) {
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
|
||||
// UZI
|
||||
// modified so now searches across many repositories
|
||||
// hands back in order of preference with higher-level endpoint resources overriding lower-level
|
||||
// also marks an "endpoint" property on the results to indicate which registry the search result was found in
|
||||
// this uses a map to mark which "names" have been obscured by higher level endpoints
|
||||
exports.search = function (name, callback) {
|
||||
request.get(endpoint + '/search/' + encodeURIComponent(name), function (err, response, body) {
|
||||
callback(err, body && JSON.parse(body));
|
||||
});
|
||||
|
||||
var f = function(i, map, results) {
|
||||
var endpoint = endpoints[i];
|
||||
request.get(endpoint + '/search/' + encodeURIComponent(name), function (err, response, body) {
|
||||
if (!response) {
|
||||
console.log("No response from endpoint: " + endpoint);
|
||||
}
|
||||
else if (err && response.statusCode !== 200 && response.statusCode !== 404) {
|
||||
return callback(err || new Error(name + ' failed to look up for endpoint: ' + endpoint));
|
||||
}
|
||||
if (response && response.statusCode !== 404) {
|
||||
var array = body && JSON.parse(body);
|
||||
for (var x = 0; x < array.length; x++) {
|
||||
var name = array[x].name;
|
||||
if (!map[name]) {
|
||||
map[name] = name;
|
||||
results.push({ name: array[x].name, url: array[x].url, endpoint: array[x].endpoint });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (i + 1 < endpoints.length) {
|
||||
f(i + 1, map, results);
|
||||
} else {
|
||||
return callback(null, results);
|
||||
}
|
||||
});
|
||||
};
|
||||
f(0, {}, []);
|
||||
};
|
||||
// END UZI
|
||||
|
||||
|
||||
|
||||
exports.info = function (name, callback) {
|
||||
exports.lookup(name, function (err, url) {
|
||||
@@ -65,8 +136,37 @@ exports.info = function (name, callback) {
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
|
||||
// UZI
|
||||
// modified so this goes across all endpoints
|
||||
// hands back in order of preference with higher-level endpoint resources overriding lower-level
|
||||
exports.all = function (callback) {
|
||||
request.get(endpoint, function (err, response, body) {
|
||||
callback(err, body && JSON.parse(body));
|
||||
});
|
||||
|
||||
var f = function(i, results) {
|
||||
var endpoint = endpoints[i];
|
||||
request.get(endpoint, function (err, response, body) {
|
||||
if (!response) {
|
||||
console.log("No response from endpoint: " + endpoint);
|
||||
}
|
||||
else if (err && response.statusCode !== 200 && response.statusCode !== 404) {
|
||||
return callback(err || new Error(name + ' failed to look up for endpoint: ' + endpoint));
|
||||
}
|
||||
if (response && response.statusCode !== 404) {
|
||||
var array = body && JSON.parse(body);
|
||||
for (var x = 0; x < array.length; x++) {
|
||||
results.push({ name: array[x].name, url: array[x].url, endpoint: array[x].endpoint });
|
||||
}
|
||||
}
|
||||
|
||||
if (i + 1 < endpoints.length) {
|
||||
f(i + 1, results);
|
||||
} else {
|
||||
return callback(new Error(name + ' not found'));
|
||||
}
|
||||
});
|
||||
};
|
||||
f(0, {});
|
||||
|
||||
};
|
||||
// END UZI
|
||||
Reference in New Issue
Block a user