mirror of
https://github.com/CorentinTh/it-tools.git
synced 2024-12-27 02:04:05 +08:00
61 lines
1.4 KiB
JavaScript
61 lines
1.4 KiB
JavaScript
import { existsSync, writeFileSync } from 'node:fs';
|
|
import { Glob } from 'bun';
|
|
import _ from 'lodash';
|
|
|
|
async function getPathsFromGlobs({ patterns, onlyFiles = true }) {
|
|
const filePaths = [];
|
|
|
|
for (const pattern of patterns) {
|
|
const glob = new Glob(pattern);
|
|
|
|
for await (const filePath of glob.scan({ onlyFiles, cwd: '.' })) {
|
|
filePaths.push(filePath);
|
|
}
|
|
}
|
|
|
|
return { filePaths };
|
|
}
|
|
|
|
function getLocaleKey({ filePath }) {
|
|
const fileName = filePath.split('/').pop();
|
|
return fileName.replace(/\.yml$/, '');
|
|
}
|
|
|
|
async function createMissingLocaleFile({ localeKey }) {
|
|
const fileName = `${localeKey}.yml`;
|
|
|
|
const { filePaths: localesDirs } = await getPathsFromGlobs({
|
|
patterns: [
|
|
'locales',
|
|
'src/tools/*/locales',
|
|
],
|
|
onlyFiles: false,
|
|
});
|
|
|
|
for (const localesDir of localesDirs) {
|
|
const filePath = `${localesDir}/${fileName}`;
|
|
|
|
if (existsSync(filePath)) {
|
|
console.log(`Locale file already exists: ${filePath}`);
|
|
continue;
|
|
}
|
|
|
|
console.log(`Creating missing locale file: ${filePath}`);
|
|
writeFileSync(filePath, '', 'utf8');
|
|
}
|
|
}
|
|
|
|
const { filePaths } = await getPathsFromGlobs({
|
|
patterns: [
|
|
'locales/*.yml',
|
|
'src/tools/*/locales/*.yml',
|
|
],
|
|
});
|
|
|
|
await Promise.all(
|
|
_.chain(filePaths)
|
|
.map(filePath => getLocaleKey({ filePath }))
|
|
.uniq()
|
|
.map(localeKey => createMissingLocaleFile({ localeKey }))
|
|
.value(),
|
|
);
|