@esgettext/tools 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +196 -21
- package/dist/command.d.ts +11 -0
- package/dist/command.js +3 -0
- package/dist/command.js.map +1 -0
- package/dist/commands/convert.d.ts +24 -0
- package/dist/commands/convert.js +284 -0
- package/dist/commands/convert.js.map +1 -0
- package/dist/commands/install.d.ts +22 -0
- package/dist/commands/install.js +249 -0
- package/dist/commands/install.js.map +1 -0
- package/dist/commands/msgfmt-all.d.ts +20 -0
- package/dist/commands/msgfmt-all.js +200 -0
- package/dist/commands/msgfmt-all.js.map +1 -0
- package/dist/commands/msgmerge-all.d.ts +21 -0
- package/dist/commands/msgmerge-all.js +212 -0
- package/dist/commands/msgmerge-all.js.map +1 -0
- package/dist/{xgettext → commands/xgettext}/file-resolver.d.ts +1 -1
- package/dist/commands/xgettext/file-resolver.js +21 -0
- package/dist/commands/xgettext/file-resolver.js.map +1 -0
- package/dist/commands/xgettext/file-resolver.spec.js +22 -0
- package/dist/commands/xgettext/file-resolver.spec.js.map +1 -0
- package/dist/commands/xgettext/files-collector.js +39 -0
- package/dist/commands/xgettext/files-collector.js.map +1 -0
- package/dist/{xgettext → commands/xgettext}/files-collector.spec.js +39 -21
- package/dist/commands/xgettext/files-collector.spec.js.map +1 -0
- package/dist/commands/xgettext.d.ts +29 -0
- package/dist/commands/xgettext.js +525 -0
- package/dist/commands/xgettext.js.map +1 -0
- package/dist/commands/xgettext.spec.js +897 -0
- package/dist/commands/xgettext.spec.js.map +1 -0
- package/dist/configuration.d.ts +36 -0
- package/dist/configuration.js +261 -0
- package/dist/configuration.js.map +1 -0
- package/dist/esgettext-package-json.d.ts +15 -0
- package/dist/esgettext-package-json.js +3 -0
- package/dist/esgettext-package-json.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +84 -0
- package/dist/index.js.map +1 -0
- package/dist/package.d.ts +1 -0
- package/dist/package.js +10 -11
- package/dist/package.js.map +1 -1
- package/dist/parser/javascript.js +7 -27
- package/dist/parser/javascript.js.map +1 -1
- package/dist/parser/javascript.spec.js +271 -172
- package/dist/parser/javascript.spec.js.map +1 -1
- package/dist/parser/parser.js +159 -146
- package/dist/parser/parser.js.map +1 -1
- package/dist/parser/po.d.ts +1 -1
- package/dist/parser/po.js +111 -128
- package/dist/parser/po.js.map +1 -1
- package/dist/parser/po.spec.js +349 -159
- package/dist/parser/po.spec.js.map +1 -1
- package/dist/parser/typescript.js +8 -27
- package/dist/parser/typescript.js.map +1 -1
- package/dist/parser/typescript.spec.js +56 -41
- package/dist/parser/typescript.spec.js.map +1 -1
- package/dist/pot/catalog.js +98 -82
- package/dist/pot/catalog.js.map +1 -1
- package/dist/pot/catalog.spec.js +47 -43
- package/dist/pot/catalog.spec.js.map +1 -1
- package/dist/pot/entry.js +102 -114
- package/dist/pot/entry.js.map +1 -1
- package/dist/pot/entry.spec.js +255 -139
- package/dist/pot/entry.spec.js.map +1 -1
- package/dist/pot/keyword.js +57 -88
- package/dist/pot/keyword.js.map +1 -1
- package/dist/pot/keyword.spec.js +26 -26
- package/dist/pot/keyword.spec.js.map +1 -1
- package/package.json +36 -24
- package/bin/esgettext-install.js +0 -5
- package/bin/esgettext-mo2json.js +0 -5
- package/bin/esgettext-msgfmt-all.js +0 -5
- package/bin/esgettext-msgmerge-all.js +0 -5
- package/bin/esgettext-xgettext.js +0 -5
- package/dist/cli/getopt.d.ts +0 -34
- package/dist/cli/getopt.js +0 -150
- package/dist/cli/getopt.js.map +0 -1
- package/dist/cli/getopt.spec.d.ts +0 -1
- package/dist/cli/getopt.spec.js +0 -164
- package/dist/cli/getopt.spec.js.map +0 -1
- package/dist/cli/install.d.ts +0 -1
- package/dist/cli/install.js +0 -91
- package/dist/cli/install.js.map +0 -1
- package/dist/cli/mo2json-cli.d.ts +0 -1
- package/dist/cli/mo2json-cli.js +0 -48
- package/dist/cli/mo2json-cli.js.map +0 -1
- package/dist/cli/msgfmt-all.d.ts +0 -1
- package/dist/cli/msgfmt-all.js +0 -99
- package/dist/cli/msgfmt-all.js.map +0 -1
- package/dist/cli/msgmerge-all.d.ts +0 -1
- package/dist/cli/msgmerge-all.js +0 -85
- package/dist/cli/msgmerge-all.js.map +0 -1
- package/dist/cli/xgettext-cli.d.ts +0 -1
- package/dist/cli/xgettext-cli.js +0 -303
- package/dist/cli/xgettext-cli.js.map +0 -1
- package/dist/install/install.d.ts +0 -10
- package/dist/install/install.js +0 -157
- package/dist/install/install.js.map +0 -1
- package/dist/msgfmt-all/msgfmt-all.d.ts +0 -8
- package/dist/msgfmt-all/msgfmt-all.js +0 -142
- package/dist/msgfmt-all/msgfmt-all.js.map +0 -1
- package/dist/msgmerge-all/msgmerge-all.d.ts +0 -9
- package/dist/msgmerge-all/msgmerge-all.js +0 -157
- package/dist/msgmerge-all/msgmerge-all.js.map +0 -1
- package/dist/parser/__snapshots__/javascript.spec.js.snap +0 -56
- package/dist/parser/__snapshots__/po.spec.js.snap +0 -176
- package/dist/pot/__snapshots__/catalog.spec.js.snap +0 -591
- package/dist/xgettext/__snapshots__/xgettext.spec.js.snap +0 -462
- package/dist/xgettext/file-resolver.js +0 -23
- package/dist/xgettext/file-resolver.js.map +0 -1
- package/dist/xgettext/file-resolver.spec.js +0 -22
- package/dist/xgettext/file-resolver.spec.js.map +0 -1
- package/dist/xgettext/files-collector.js +0 -41
- package/dist/xgettext/files-collector.js.map +0 -1
- package/dist/xgettext/files-collector.spec.js.map +0 -1
- package/dist/xgettext/xgettext.d.ts +0 -16
- package/dist/xgettext/xgettext.js +0 -335
- package/dist/xgettext/xgettext.js.map +0 -1
- package/dist/xgettext/xgettext.spec.js +0 -743
- package/dist/xgettext/xgettext.spec.js.map +0 -1
- /package/dist/{xgettext → commands/xgettext}/file-resolver.spec.d.ts +0 -0
- /package/dist/{xgettext → commands/xgettext}/files-collector.d.ts +0 -0
- /package/dist/{xgettext → commands/xgettext}/files-collector.spec.d.ts +0 -0
- /package/dist/{xgettext → commands}/xgettext.spec.d.ts +0 -0
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.MsgmergeAll = void 0;
|
|
27
|
+
const path = __importStar(require("path"));
|
|
28
|
+
const fs = __importStar(require("fs"));
|
|
29
|
+
const childProcess = __importStar(require("child_process"));
|
|
30
|
+
const runtime_1 = require("@esgettext/runtime");
|
|
31
|
+
const package_1 = require("../package");
|
|
32
|
+
const gtx = runtime_1.Textdomain.getInstance('com.cantanea.esgettext-tools');
|
|
33
|
+
class MsgmergeAll {
|
|
34
|
+
constructor(configuration) {
|
|
35
|
+
var _a, _b;
|
|
36
|
+
this.configuration = configuration;
|
|
37
|
+
if (((_a = configuration.package) === null || _a === void 0 ? void 0 : _a.textdomain) &&
|
|
38
|
+
typeof ((_b = configuration.po) === null || _b === void 0 ? void 0 : _b.directory) !== 'undefined') {
|
|
39
|
+
const filename = `${configuration.package.textdomain}.pot`;
|
|
40
|
+
const potfile = path.join(configuration.po.directory, filename);
|
|
41
|
+
if (fs.existsSync(potfile)) {
|
|
42
|
+
this.potfile = potfile;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
synopsis() {
|
|
47
|
+
if (typeof this.potfile === 'undefined') {
|
|
48
|
+
return `<${gtx._('POTFILE')}>`;
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
return `[${gtx._('POTFILE')}]`;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
description() {
|
|
55
|
+
return gtx._("Invoke 'msgmerge' for multiple files.");
|
|
56
|
+
}
|
|
57
|
+
aliases() {
|
|
58
|
+
return [];
|
|
59
|
+
}
|
|
60
|
+
args() {
|
|
61
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
62
|
+
const options = {
|
|
63
|
+
locales: {
|
|
64
|
+
alias: 'l',
|
|
65
|
+
type: 'array',
|
|
66
|
+
describe: gtx._('List of locale identifiers'),
|
|
67
|
+
demandOption: true,
|
|
68
|
+
default: (_a = this.configuration.po) === null || _a === void 0 ? void 0 : _a.locales,
|
|
69
|
+
group: gtx._('Input file options:'),
|
|
70
|
+
},
|
|
71
|
+
directory: {
|
|
72
|
+
alias: 'D',
|
|
73
|
+
type: 'string',
|
|
74
|
+
describe: gtx._("Search '.po' files in DIRECTORY"),
|
|
75
|
+
default: (_c = (_b = this.configuration.po) === null || _b === void 0 ? void 0 : _b.directory) !== null && _c !== void 0 ? _c : '.',
|
|
76
|
+
group: gtx._('Input file options:'),
|
|
77
|
+
},
|
|
78
|
+
msgmerge: {
|
|
79
|
+
type: 'string',
|
|
80
|
+
describe: gtx._('msgmerge program if not in PATH [string]'),
|
|
81
|
+
default: (_f = (_e = (_d = this.configuration.programs) === null || _d === void 0 ? void 0 : _d.msgmerge) === null || _e === void 0 ? void 0 : _e.path) !== null && _f !== void 0 ? _f : 'msgmerge',
|
|
82
|
+
group: gtx._('Mode of operation:'),
|
|
83
|
+
},
|
|
84
|
+
options: {
|
|
85
|
+
type: 'string',
|
|
86
|
+
array: true,
|
|
87
|
+
describe: gtx._x("Options to pass to '{program}' program (without hyphens)", { program: 'msgmerge' }),
|
|
88
|
+
default: (_h = (_g = this.configuration.programs) === null || _g === void 0 ? void 0 : _g.msgfmt) === null || _h === void 0 ? void 0 : _h.options,
|
|
89
|
+
group: gtx._('Mode of operation:'),
|
|
90
|
+
},
|
|
91
|
+
verbose: {
|
|
92
|
+
alias: 'V',
|
|
93
|
+
type: 'boolean',
|
|
94
|
+
describe: gtx._('Enable verbose output'),
|
|
95
|
+
},
|
|
96
|
+
};
|
|
97
|
+
for (const name of ['locales', 'options']) {
|
|
98
|
+
if (!options[name].default) {
|
|
99
|
+
delete options[name].default;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return options;
|
|
103
|
+
}
|
|
104
|
+
additional(argv) {
|
|
105
|
+
argv.positional(gtx._('POTFILE'), {
|
|
106
|
+
type: 'string',
|
|
107
|
+
describe: gtx._('Catalog file with up-to-date message ids'),
|
|
108
|
+
default: this.potfile,
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
init(argv) {
|
|
112
|
+
var _a, _b;
|
|
113
|
+
const options = argv;
|
|
114
|
+
this.options = options;
|
|
115
|
+
const conf = this.configuration;
|
|
116
|
+
this.potfile = options[gtx._('POTFILE')];
|
|
117
|
+
if (!options.locales && ((_a = conf.po) === null || _a === void 0 ? void 0 : _a.locales)) {
|
|
118
|
+
options.locales = (_b = conf.po) === null || _b === void 0 ? void 0 : _b.locales;
|
|
119
|
+
}
|
|
120
|
+
if (!options.locales || !options.locales.length) {
|
|
121
|
+
throw new Error(gtx._('no locales given'));
|
|
122
|
+
}
|
|
123
|
+
this.locales = [];
|
|
124
|
+
for (let i = 0; i < options.locales.length; ++i) {
|
|
125
|
+
const locales = options.locales[i].split(/[ \t]*,[ \t]*/);
|
|
126
|
+
for (let j = 0; j < locales.length; ++j) {
|
|
127
|
+
this.locales.push(locales[j]);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
run(argv) {
|
|
132
|
+
this.init(argv);
|
|
133
|
+
return new Promise(resolve => {
|
|
134
|
+
this.locales
|
|
135
|
+
.reduce((promise, locale) => promise.then(() => this.msgmergeLocale(locale)), Promise.resolve())
|
|
136
|
+
.then(() => resolve(0), () => resolve(1));
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
convertOptions(options) {
|
|
140
|
+
const msgmergeOptions = [];
|
|
141
|
+
let errors = 0;
|
|
142
|
+
if (options) {
|
|
143
|
+
options.forEach(name => {
|
|
144
|
+
if (name.substring(0, 1) === '-') {
|
|
145
|
+
console.error(gtx._x("{programName}: option '{option}': Options passed to '{program}' must not start with a hyphen", {
|
|
146
|
+
programName: package_1.Package.getName(),
|
|
147
|
+
program: 'msgfmt',
|
|
148
|
+
option: name,
|
|
149
|
+
}));
|
|
150
|
+
++errors;
|
|
151
|
+
}
|
|
152
|
+
if (name.length > 1) {
|
|
153
|
+
msgmergeOptions.push(`--${name}`);
|
|
154
|
+
}
|
|
155
|
+
else if (name.length === 1) {
|
|
156
|
+
msgmergeOptions.push(`-${name}`);
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
return errors ? null : msgmergeOptions;
|
|
161
|
+
}
|
|
162
|
+
async msgmergeLocale(locale) {
|
|
163
|
+
return new Promise(resolve => {
|
|
164
|
+
const args = this.convertOptions(this.options.options);
|
|
165
|
+
if (!args)
|
|
166
|
+
return resolve(1);
|
|
167
|
+
const poFile = this.options.directory + '/' + locale + '.po';
|
|
168
|
+
const oldPoFile = this.options.directory + '/' + locale + '.old.po';
|
|
169
|
+
args.push(oldPoFile, this.potfile, '-o', poFile);
|
|
170
|
+
console.log(gtx._x("Merging '{pot}' into '{po}'.", {
|
|
171
|
+
pot: this.potfile,
|
|
172
|
+
po: poFile,
|
|
173
|
+
}));
|
|
174
|
+
try {
|
|
175
|
+
fs.renameSync(poFile, oldPoFile);
|
|
176
|
+
const msgmerge = childProcess.spawn(this.options.msgmerge, args, {
|
|
177
|
+
windowsHide: true,
|
|
178
|
+
});
|
|
179
|
+
msgmerge.on('error', err => {
|
|
180
|
+
throw new Error(gtx._x("Failed to run '{prg}': {err}", {
|
|
181
|
+
prg: this.options.msgmerge,
|
|
182
|
+
err,
|
|
183
|
+
}));
|
|
184
|
+
});
|
|
185
|
+
msgmerge.stdout.on('data', (data) => process.stdout.write(data.toString()));
|
|
186
|
+
msgmerge.stderr.on('data', (data) => process.stderr.write(data.toString()));
|
|
187
|
+
msgmerge.on('close', code => {
|
|
188
|
+
if (code) {
|
|
189
|
+
fs.renameSync(oldPoFile, poFile);
|
|
190
|
+
resolve(1);
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
fs.unlinkSync(oldPoFile);
|
|
194
|
+
resolve(0);
|
|
195
|
+
}
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
catch (err) {
|
|
199
|
+
try {
|
|
200
|
+
fs.renameSync(oldPoFile, poFile);
|
|
201
|
+
}
|
|
202
|
+
catch (err1) {
|
|
203
|
+
console.error(err1);
|
|
204
|
+
}
|
|
205
|
+
console.error(err);
|
|
206
|
+
resolve(1);
|
|
207
|
+
}
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
exports.MsgmergeAll = MsgmergeAll;
|
|
212
|
+
//# sourceMappingURL=msgmerge-all.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"msgmerge-all.js","sourceRoot":"","sources":["../../src/commands/msgmerge-all.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FileResolver = void 0;
|
|
4
|
+
const path_1 = require("path");
|
|
5
|
+
const fs_1 = require("fs");
|
|
6
|
+
class FileResolver {
|
|
7
|
+
constructor(directories = ['']) {
|
|
8
|
+
this.directories = directories;
|
|
9
|
+
}
|
|
10
|
+
resolve(filename) {
|
|
11
|
+
for (let i = 0; i < this.directories.length; ++i) {
|
|
12
|
+
const resolved = (0, path_1.join)(this.directories[i], filename);
|
|
13
|
+
if ((0, fs_1.existsSync)(resolved)) {
|
|
14
|
+
return resolved;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
exports.FileResolver = FileResolver;
|
|
21
|
+
//# sourceMappingURL=file-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-resolver.js","sourceRoot":"","sources":["../../../src/commands/xgettext/file-resolver.ts"],"names":[],"mappings":";;;AAAA,+BAA4B;AAC5B,2BAAgC;AAEhC,MAAa,YAAY;IACxB,YAA6B,cAA6B,CAAC,EAAE,CAAC;QAAjC,gBAAW,GAAX,WAAW,CAAsB;IAAG,CAAC;IAElE,OAAO,CAAC,QAAgB;QACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;YAClD,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;YACrD,IAAI,IAAA,eAAU,EAAC,QAAQ,CAAC,EAAE,CAAC;gBAC1B,OAAO,QAAQ,CAAC;YACjB,CAAC;QACF,CAAC;QAED,OAAO,IAAI,CAAC;IACb,CAAC;CACD;AAbD,oCAaC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const path_1 = require("path");
|
|
4
|
+
const file_resolver_1 = require("./file-resolver");
|
|
5
|
+
describe('file resolving', () => {
|
|
6
|
+
it('should default to the current directory', () => {
|
|
7
|
+
const resolver = new file_resolver_1.FileResolver();
|
|
8
|
+
const filename = 'package.json';
|
|
9
|
+
expect(resolver.resolve('package.json')).toEqual((0, path_1.join)('', filename));
|
|
10
|
+
});
|
|
11
|
+
it('should search one directory and fail', () => {
|
|
12
|
+
const filename = (0, path_1.basename)(__filename);
|
|
13
|
+
const resolver = new file_resolver_1.FileResolver([__filename]);
|
|
14
|
+
expect(resolver.resolve(filename)).toBeNull();
|
|
15
|
+
});
|
|
16
|
+
it('should search two directories and succeed', () => {
|
|
17
|
+
const filename = (0, path_1.basename)(__filename);
|
|
18
|
+
const resolver = new file_resolver_1.FileResolver([__filename, __dirname]);
|
|
19
|
+
expect(resolver.resolve(filename)).toEqual((0, path_1.join)(__dirname, filename));
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
//# sourceMappingURL=file-resolver.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-resolver.spec.js","sourceRoot":"","sources":["../../../src/commands/xgettext/file-resolver.spec.ts"],"names":[],"mappings":";;AAAA,+BAAsC;AACtC,mDAA+C;AAE/C,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAI/B,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QAClD,MAAM,QAAQ,GAAG,IAAI,4BAAY,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,cAAc,CAAC;QAEhC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,IAAA,WAAI,EAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC/C,MAAM,QAAQ,GAAG,IAAA,eAAQ,EAAC,UAAU,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,IAAI,4BAAY,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;QAEhD,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACpD,MAAM,QAAQ,GAAG,IAAA,eAAQ,EAAC,UAAU,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,IAAI,4BAAY,CAAC,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;QAE3D,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAA,WAAI,EAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FilesCollector = void 0;
|
|
4
|
+
const fs_1 = require("fs");
|
|
5
|
+
const runtime_1 = require("@esgettext/runtime");
|
|
6
|
+
const gtx = runtime_1.Textdomain.getInstance('tools');
|
|
7
|
+
class FilesCollector {
|
|
8
|
+
constructor(filesFrom, args) {
|
|
9
|
+
if (typeof filesFrom === 'undefined' && args.length === 0) {
|
|
10
|
+
throw new Error(gtx._('no input file given'));
|
|
11
|
+
}
|
|
12
|
+
const filenames = new Array();
|
|
13
|
+
if (typeof filesFrom !== 'undefined') {
|
|
14
|
+
filesFrom.forEach(fromFile => {
|
|
15
|
+
this.getFilesFromFile(fromFile).forEach(filename => {
|
|
16
|
+
filenames.push(filename);
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
args.forEach(filename => filenames.push(filename));
|
|
21
|
+
this.filenames = Array.from(new Set(filenames));
|
|
22
|
+
}
|
|
23
|
+
getFilesFromFile(filename) {
|
|
24
|
+
let content;
|
|
25
|
+
if ('-' === filename) {
|
|
26
|
+
content = process.stdin.read();
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
content = (0, fs_1.readFileSync)(filename);
|
|
30
|
+
}
|
|
31
|
+
return content
|
|
32
|
+
.toString()
|
|
33
|
+
.split('\n')
|
|
34
|
+
.map(line => line.replace(/#.*/, '').trim())
|
|
35
|
+
.filter(line => line.length);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.FilesCollector = FilesCollector;
|
|
39
|
+
//# sourceMappingURL=files-collector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"files-collector.js","sourceRoot":"","sources":["../../../src/commands/xgettext/files-collector.ts"],"names":[],"mappings":";;;AAAA,2BAAkC;AAClC,gDAAgD;AAEhD,MAAM,GAAG,GAAG,oBAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAE5C,MAAa,cAAc;IAG1B,YAAY,SAAwB,EAAE,IAAmB;QACxD,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3D,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,KAAK,EAAU,CAAC;QACtC,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE,CAAC;YACtC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAC5B,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;oBAClD,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC1B,CAAC,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAGnD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;IACjD,CAAC;IAEO,gBAAgB,CAAC,QAAgB;QACxC,IAAI,OAAe,CAAC;QACpB,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YACtB,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,EAAY,CAAC;QAC1C,CAAC;aAAM,CAAC;YACP,OAAO,GAAG,IAAA,iBAAY,EAAC,QAAQ,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,OAAO;aACZ,QAAQ,EAAE;aACV,KAAK,CAAC,IAAI,CAAC;aACX,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;aAC3C,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;CACD;AApCD,wCAoCC"}
|
|
@@ -23,20 +23,30 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
const fs = __importStar(require("fs"));
|
|
27
|
+
const files_collector_1 = require("./files-collector");
|
|
28
28
|
jest.mock('fs');
|
|
29
|
-
|
|
30
|
-
describe('File collector',
|
|
31
|
-
describe('files-from',
|
|
32
|
-
afterEach(
|
|
29
|
+
const reader = fs.readFileSync;
|
|
30
|
+
describe('File collector', () => {
|
|
31
|
+
describe('files-from', () => {
|
|
32
|
+
afterEach(() => {
|
|
33
33
|
reader.mockClear();
|
|
34
34
|
});
|
|
35
|
-
it('should read files from a file and ignore comments and empty lines',
|
|
36
|
-
|
|
37
|
-
|
|
35
|
+
it('should read files from a file and ignore comments and empty lines', () => {
|
|
36
|
+
const file1 = `foo
|
|
37
|
+
bar
|
|
38
|
+
baz
|
|
39
|
+
`;
|
|
40
|
+
const file2 = `
|
|
41
|
+
# Ignore comment.
|
|
42
|
+
Huey # The first.
|
|
43
|
+
|
|
44
|
+
Dewey # The second.
|
|
45
|
+
|
|
46
|
+
Louie # The third.
|
|
47
|
+
`;
|
|
38
48
|
reader.mockReturnValueOnce(file1).mockReturnValueOnce(file2);
|
|
39
|
-
|
|
49
|
+
const collector = new files_collector_1.FilesCollector(['file1', 'file2'], []);
|
|
40
50
|
expect(collector.filenames).toEqual([
|
|
41
51
|
'foo',
|
|
42
52
|
'bar',
|
|
@@ -46,14 +56,18 @@ describe('File collector', function () {
|
|
|
46
56
|
'Louie',
|
|
47
57
|
]);
|
|
48
58
|
});
|
|
49
|
-
it('should take files from command-line arguments',
|
|
50
|
-
|
|
59
|
+
it('should take files from command-line arguments', () => {
|
|
60
|
+
const collector = new files_collector_1.FilesCollector([], ['file1', 'file2']);
|
|
51
61
|
expect(collector.filenames).toEqual(['file1', 'file2']);
|
|
52
62
|
});
|
|
53
|
-
it('should mix files in the right order',
|
|
54
|
-
|
|
63
|
+
it('should mix files in the right order', () => {
|
|
64
|
+
const potfiles = `
|
|
65
|
+
foo
|
|
66
|
+
bar
|
|
67
|
+
baz
|
|
68
|
+
`;
|
|
55
69
|
reader.mockReturnValueOnce(potfiles);
|
|
56
|
-
|
|
70
|
+
const collector = new files_collector_1.FilesCollector(['POTFILES'], ['hubba', 'bubba']);
|
|
57
71
|
expect(collector.filenames).toEqual([
|
|
58
72
|
'foo',
|
|
59
73
|
'bar',
|
|
@@ -62,16 +76,20 @@ describe('File collector', function () {
|
|
|
62
76
|
'bubba',
|
|
63
77
|
]);
|
|
64
78
|
});
|
|
65
|
-
it('should make input files unique',
|
|
66
|
-
|
|
79
|
+
it('should make input files unique', () => {
|
|
80
|
+
const potfiles = `
|
|
81
|
+
foo
|
|
82
|
+
bar
|
|
83
|
+
baz
|
|
84
|
+
`;
|
|
67
85
|
reader.mockReturnValueOnce(potfiles);
|
|
68
|
-
|
|
86
|
+
const collector = new files_collector_1.FilesCollector(['POTFILES'], ['foo', 'bar', 'bazoo']);
|
|
69
87
|
expect(collector.filenames).toEqual(['foo', 'bar', 'baz', 'bazoo']);
|
|
70
88
|
});
|
|
71
89
|
});
|
|
72
|
-
describe('errors',
|
|
73
|
-
it('should throw an exception if no input files given',
|
|
74
|
-
expect(
|
|
90
|
+
describe('errors', () => {
|
|
91
|
+
it('should throw an exception if no input files given', () => {
|
|
92
|
+
expect(() => new files_collector_1.FilesCollector(undefined, [])).toThrow(new Error('no input file given'));
|
|
75
93
|
});
|
|
76
94
|
});
|
|
77
95
|
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"files-collector.spec.js","sourceRoot":"","sources":["../../../src/commands/xgettext/files-collector.spec.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,uDAAmD;AAEnD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEhB,MAAM,MAAM,GAAG,EAAE,CAAC,YAAyB,CAAC;AAE5C,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC/B,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC3B,SAAS,CAAC,GAAG,EAAE;YACd,MAAM,CAAC,SAAS,EAAE,CAAC;QACpB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;YAC5E,MAAM,KAAK,GAAG;;;CAGhB,CAAC;YACC,MAAM,KAAK,GAAG;;;;;;;CAOhB,CAAC;YAEC,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;YAC7D,MAAM,SAAS,GAAG,IAAI,gCAAc,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;YAC7D,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC;gBACnC,KAAK;gBACL,KAAK;gBACL,KAAK;gBACL,MAAM;gBACN,OAAO;gBACP,OAAO;aACP,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;YACxD,MAAM,SAAS,GAAG,IAAI,gCAAc,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;YAC7D,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC9C,MAAM,QAAQ,GAAG;;;;CAInB,CAAC;YACC,MAAM,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;YACrC,MAAM,SAAS,GAAG,IAAI,gCAAc,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;YACvE,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC;gBACnC,KAAK;gBACL,KAAK;gBACL,KAAK;gBACL,OAAO;gBACP,OAAO;aACP,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;YACzC,MAAM,QAAQ,GAAG;;;;CAInB,CAAC;YACC,MAAM,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;YACrC,MAAM,SAAS,GAAG,IAAI,gCAAc,CACnC,CAAC,UAAU,CAAC,EACZ,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CACvB,CAAC;YACF,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACvB,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;YAC5D,MAAM,CACL,GAAG,EAAE,CAAC,IAAI,gCAAc,CAAC,SAAgC,EAAE,EAAE,CAAC,CAC9D,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import yargs from 'yargs';
|
|
2
|
+
import { Command } from '../command';
|
|
3
|
+
import { Configuration } from '../configuration';
|
|
4
|
+
export declare class XGettext implements Command {
|
|
5
|
+
private catalog;
|
|
6
|
+
private date;
|
|
7
|
+
private exclude;
|
|
8
|
+
private options;
|
|
9
|
+
private readonly configuration;
|
|
10
|
+
constructor(configuration: Configuration, date?: string);
|
|
11
|
+
synopsis(): string;
|
|
12
|
+
description(): string;
|
|
13
|
+
aliases(): Array<string>;
|
|
14
|
+
args(): {
|
|
15
|
+
[key: string]: yargs.Options;
|
|
16
|
+
};
|
|
17
|
+
additional(_: yargs.Argv): void;
|
|
18
|
+
private init;
|
|
19
|
+
doRun(): number;
|
|
20
|
+
run(argv: yargs.Arguments): Promise<number>;
|
|
21
|
+
private parse;
|
|
22
|
+
private readFile;
|
|
23
|
+
private getParserByFilename;
|
|
24
|
+
private getParserByLanguage;
|
|
25
|
+
private warn;
|
|
26
|
+
private output;
|
|
27
|
+
private fillExclusionCatalog;
|
|
28
|
+
private getParserOptions;
|
|
29
|
+
}
|