1 | var path = require('path');
|
2 | var fs = require('fs');
|
3 |
|
4 | var walk = function(dir, done) {
|
5 | var results = [];
|
6 | fs.readdir(dir, function(err, list) {
|
7 | if (err) return done(err);
|
8 | var pending = list.length;
|
9 | if (!pending) return done(null, results);
|
10 | list.forEach(function(file) {
|
11 | file = dir + '/' + file;
|
12 | fs.stat(file, function(err, stat) {
|
13 | if (stat && stat.isDirectory()) {
|
14 | walk(file, function(err, res) {
|
15 | results = results.concat(res);
|
16 | if (!--pending) done(null, results);
|
17 | });
|
18 | } else {
|
19 | results.push(file);
|
20 | if (!--pending) done(null, results);
|
21 | }
|
22 | });
|
23 | });
|
24 | });
|
25 | };
|
26 |
|
27 | walk(path.join(__dirname, '../lib/commands'), function (err, files) {
|
28 | var results = [];
|
29 |
|
30 | files.forEach(function (file) {
|
31 | if (path.extname(file) === '.js' || path.extname(file) === '._js') {
|
32 | var content = fs.readFileSync(file).toString();
|
33 |
|
34 | var startIndex = 0;
|
35 | var found;
|
36 | do {
|
37 | foundIndex = content.indexOf('$(', startIndex);
|
38 |
|
39 | if (foundIndex >= 0) {
|
40 | var bracketCount = 0;
|
41 | var stop = false;
|
42 | for (var i = foundIndex + '$('.length; !stop && i < content.length; i++) {
|
43 | if (content[i] === '(') {
|
44 | bracketCount++;
|
45 | } else if (content[i] === ')') {
|
46 | if (bracketCount === 0) {
|
47 | var match = content.substr(foundIndex + 3, (i - foundIndex) - 4);
|
48 | match = match.replace(/\\'/g, '\'').replace(/\\\\/g, '\\').replace(/\\n/g, '\n');
|
49 | results.push(match);
|
50 | startIndex = i;
|
51 | stop = true;
|
52 | } else {
|
53 | bracketCount--;
|
54 | }
|
55 | }
|
56 | }
|
57 | }
|
58 | } while (foundIndex > 0);
|
59 | }
|
60 | });
|
61 |
|
62 | var sortedKeys = results.sort();
|
63 | var labels = {};
|
64 | sortedKeys.forEach(function (label) {
|
65 | labels[label] = label;
|
66 | });
|
67 |
|
68 | fs.writeFileSync(path.join(__dirname, '../lib/locales/en-us.json'), JSON.stringify(labels, null, 4));
|
69 | }); |
\ | No newline at end of file |