|
1 | | -import { |
2 | | - existsSync, |
3 | | - readdirSync, |
4 | | - readFileSync, |
5 | | -} from 'fs'; |
6 | | -import { |
7 | | - parse, |
8 | | -} from 'yaml'; |
9 | 1 | import { |
10 | 2 | EMPTY, |
11 | 3 | } from './constants.js'; |
12 | 4 | import Logger from './logger.js'; |
13 | | -import loadKeys from './loadKeys.js'; |
14 | 5 | import Config from './config.js'; |
| 6 | +import checkFolder from './check-folder.js'; |
15 | 7 | export default ( |
16 | 8 | logger: Logger, |
17 | 9 | config: Config, |
18 | 10 | ) => { |
19 | 11 | let errors = 0; |
20 | 12 | let warnings = 0; |
21 | 13 | for (const folder of config.folders) { |
22 | | - const localConfig = new Config(`${ folder }`,); |
23 | | - if (! existsSync(`${ folder }/${ localConfig.originDirectory }`,)) { |
24 | | - logger.error(`folder ${ folder }/${ localConfig.originDirectory } doesn't exist`,); |
25 | | - errors ++; |
26 | | - continue; |
27 | | - } |
28 | | - logger.info( |
29 | | - `Checking translations in folder ${ folder }/${ localConfig.originDirectory }`, |
30 | | - ); |
31 | | - logger.info('',); |
32 | | - const yamlFiles = readdirSync(`${ folder }/${ localConfig.originDirectory }`,) |
33 | | - .filter((file,) => file.endsWith('.yml',),); |
34 | | - const keys = { |
35 | | - en: [], |
36 | | - }; |
37 | | - yamlFiles.forEach((yamlFile,) => { |
38 | | - const lang = yamlFile.replace('.yml', '',); |
39 | | - keys[lang] = []; |
40 | | - const yamlPath = `${ folder }/${ localConfig.originDirectory }/${ yamlFile }`; |
41 | | - |
42 | | - const content = readFileSync(yamlPath, 'utf8',); |
43 | | - |
44 | | - try { |
45 | | - const data = parse(content,); |
46 | | - keys[lang] = loadKeys(data,); |
47 | | - } catch (e) { |
48 | | - logger.error(`Failed parsing ${ yamlPath }: ${ e }`,); |
49 | | - errors ++; |
50 | | - } |
51 | | - },); |
52 | | - for (const lang of Object.keys(keys,)) { |
53 | | - if (lang !== 'en') { |
54 | | - const tooMany = keys[lang].filter((key,) => ! keys.en.includes(key,),); |
55 | | - const missing = keys.en.filter((key,) => ! keys[lang].includes(key,),); |
56 | | - for (const key of tooMany) { |
57 | | - errors ++; |
58 | | - logger.error( |
59 | | - `ERROR: ${ lang } defines ${ key }, that doesn't exist in english.`, |
60 | | - ); |
61 | | - } |
62 | | - for (const key of missing) { |
63 | | - warnings ++; |
64 | | - logger.warn( |
65 | | - `WARN: ${ lang } lacks ${ key }, that is defined in english.`, |
66 | | - ); |
67 | | - } |
68 | | - } |
69 | | - } |
70 | | - logger.info('',); |
71 | | - logger.info(`Found ${ errors } errors and ${ warnings } warnings.`,); |
72 | | - logger.info('',); |
| 14 | + const partial = checkFolder(folder, logger,); |
| 15 | + errors += partial.errors; |
| 16 | + warnings += partial.warnings; |
73 | 17 | } |
74 | 18 | return errors === EMPTY && (! config.isFailOnWarning || warnings === EMPTY); |
75 | 19 | }; |
0 commit comments