12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- 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(),
- );
|