|
2 | 2 | 'use strict';
|
3 | 3 |
|
4 | 4 | var Q = require('q'),
|
5 |
| - qfs = require('q-fs'), |
| 5 | + qfs = require('q-io/fs'), |
6 | 6 | converter = require('./converter.js'),
|
7 | 7 | util = require('./util.js'),
|
8 | 8 | closureI18nExtractor = require('./closureI18nExtractor.js'),
|
@@ -47,24 +47,40 @@ function extractPlurals() {
|
47 | 47 |
|
48 | 48 | function writeLocaleFiles() {
|
49 | 49 | console.log('Final stage: Writing angular locale files to directory: %j', NG_LOCALE_DIR);
|
50 |
| - var writePromises = []; |
| 50 | + var result = Q.defer(); |
51 | 51 | var localeIds = Object.keys(localeInfo);
|
52 | 52 | var num_files = 0;
|
53 |
| - localeIds.forEach(function(localeID) { |
| 53 | + |
| 54 | + console.log('Generated %j locale files.', localeIds.length); |
| 55 | + loop(); |
| 56 | + return result.promise; |
| 57 | + |
| 58 | + // Need to use a loop and not write the files in parallel, |
| 59 | + // as otherwise we will get the error EMFILE, which means |
| 60 | + // we have too many open files. |
| 61 | + function loop() { |
| 62 | + var nextPromise; |
| 63 | + if (localeIds.length) { |
| 64 | + nextPromise = process(localeIds.pop()) || Q.when(); |
| 65 | + nextPromise.then(loop, result.reject); |
| 66 | + } else { |
| 67 | + result.resolve(num_files); |
| 68 | + } |
| 69 | + } |
| 70 | + |
| 71 | + function process(localeID) { |
54 | 72 | var content = closureI18nExtractor.outputLocale(localeInfo, localeID);
|
55 | 73 | if (!content) return;
|
56 | 74 | var correctedLocaleId = closureI18nExtractor.correctedLocaleId(localeID);
|
57 | 75 | var filename = NG_LOCALE_DIR + 'angular-locale_' + correctedLocaleId + '.js'
|
58 |
| - writePromises.push( |
59 |
| - qfs.write(filename, content) |
60 |
| - .then(function () { |
61 |
| - console.log('Wrote ' + filename); |
62 |
| - ++num_files; |
63 |
| - })); |
64 | 76 | console.log('Writing ' + filename);
|
65 |
| - }); |
66 |
| - console.log('Generated %j locale files.', localeIds.length); |
67 |
| - return Q.all(writePromises).then(function() { return num_files }); |
| 77 | + return qfs.write(filename, content) |
| 78 | + .then(function () { |
| 79 | + console.log('Wrote ' + filename); |
| 80 | + ++num_files; |
| 81 | + }); |
| 82 | + } |
| 83 | + |
68 | 84 | }
|
69 | 85 |
|
70 | 86 | /**
|
|
0 commit comments