Merge pull request #6207 from tschaub/require-all
Require all when generating exports
This commit is contained in:
+15
-14
@@ -76,15 +76,19 @@ function getSymbols(patterns, callback) {
|
|||||||
* @param {Array.<string>} patterns A list of symbol names to match. Wildcards
|
* @param {Array.<string>} patterns A list of symbol names to match. Wildcards
|
||||||
* at the end of a string will match multiple names.
|
* at the end of a string will match multiple names.
|
||||||
* @param {Array.<Object>} symbols List of symbols.
|
* @param {Array.<Object>} symbols List of symbols.
|
||||||
* @param {function(Error, Array.<Object>)} callback Called with the filtered
|
* @param {function(Error, Array.<Object>, Array.<string>)} callback Called with
|
||||||
* list of symbols (or any error).
|
* the filtered list of symbols and a list of all provides (or any error).
|
||||||
*/
|
*/
|
||||||
function filterSymbols(patterns, symbols, callback) {
|
function filterSymbols(patterns, symbols, callback) {
|
||||||
var matches = [];
|
var matches = [];
|
||||||
|
|
||||||
|
var provides = {};
|
||||||
var lookup = {};
|
var lookup = {};
|
||||||
symbols.forEach(function(symbol) {
|
symbols.forEach(function(symbol) {
|
||||||
lookup[symbol.name] = symbol;
|
lookup[symbol.name] = symbol;
|
||||||
|
symbol.provides.forEach(function(provide) {
|
||||||
|
provides[provide] = true;
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
patterns.forEach(function(name) {
|
patterns.forEach(function(name) {
|
||||||
@@ -111,7 +115,7 @@ function filterSymbols(patterns, symbols, callback) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
callback(null, matches);
|
callback(null, matches, Object.keys(provides).sort());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -150,15 +154,16 @@ function formatPropertyExport(name) {
|
|||||||
* Generate export code given a list symbol names.
|
* Generate export code given a list symbol names.
|
||||||
* @param {Array.<Object>} symbols List of symbols.
|
* @param {Array.<Object>} symbols List of symbols.
|
||||||
* @param {string|undefined} namespace Target object for exported symbols.
|
* @param {string|undefined} namespace Target object for exported symbols.
|
||||||
|
* @param {Array.<string>} provides List of all provides.
|
||||||
* @return {string} Export code.
|
* @return {string} Export code.
|
||||||
*/
|
*/
|
||||||
function generateExports(symbols, namespace) {
|
function generateExports(symbols, namespace, provides) {
|
||||||
var blocks = [];
|
var blocks = [];
|
||||||
var requires = {};
|
provides.forEach(function(provide) {
|
||||||
|
blocks.push('goog.require(\'' + provide + '\');');
|
||||||
|
});
|
||||||
|
blocks.push('\n\n');
|
||||||
symbols.forEach(function(symbol) {
|
symbols.forEach(function(symbol) {
|
||||||
symbol.provides.forEach(function(provide) {
|
|
||||||
requires[provide] = true;
|
|
||||||
});
|
|
||||||
var name = symbol.name;
|
var name = symbol.name;
|
||||||
if (name.indexOf('#') > 0) {
|
if (name.indexOf('#') > 0) {
|
||||||
blocks.push(formatPropertyExport(name));
|
blocks.push(formatPropertyExport(name));
|
||||||
@@ -166,10 +171,6 @@ function generateExports(symbols, namespace) {
|
|||||||
blocks.push(formatSymbolExport(name, namespace));
|
blocks.push(formatSymbolExport(name, namespace));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
blocks.unshift('\n');
|
|
||||||
Object.keys(requires).sort().reverse().forEach(function(name) {
|
|
||||||
blocks.unshift('goog.require(\'' + name + '\');');
|
|
||||||
});
|
|
||||||
blocks.unshift(
|
blocks.unshift(
|
||||||
'/**\n' +
|
'/**\n' +
|
||||||
' * @fileoverview Custom exports file.\n' +
|
' * @fileoverview Custom exports file.\n' +
|
||||||
@@ -190,10 +191,10 @@ function main(config, callback) {
|
|||||||
async.waterfall([
|
async.waterfall([
|
||||||
getSymbols.bind(null, config.exports),
|
getSymbols.bind(null, config.exports),
|
||||||
filterSymbols,
|
filterSymbols,
|
||||||
function(symbols, done) {
|
function(symbols, provides, done) {
|
||||||
var code, err;
|
var code, err;
|
||||||
try {
|
try {
|
||||||
code = generateExports(symbols, config.namespace);
|
code = generateExports(symbols, config.namespace, provides);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
err = e;
|
err = e;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user