mirror of
https://github.com/elyby/accounts-frontend.git
synced 2024-12-29 08:20:21 +05:30
Migrate i18n-collect to the new prompt library
This commit is contained in:
parent
5e62c930b1
commit
57cf6b3776
@ -4,7 +4,7 @@ import fs from 'fs';
|
|||||||
import { sync as globSync } from 'glob';
|
import { sync as globSync } from 'glob';
|
||||||
import { sync as mkdirpSync } from 'mkdirp';
|
import { sync as mkdirpSync } from 'mkdirp';
|
||||||
import chalk from 'chalk';
|
import chalk from 'chalk';
|
||||||
import prompt from 'prompt';
|
import { prompt } from 'inquirer';
|
||||||
import localesMap from 'app/i18n';
|
import localesMap from 'app/i18n';
|
||||||
|
|
||||||
const MESSAGES_PATTERN = `${__dirname}/../../build/messages/**/*.json`;
|
const MESSAGES_PATTERN = `${__dirname}/../../build/messages/**/*.json`;
|
||||||
@ -17,6 +17,55 @@ interface MessageDescriptor {
|
|||||||
defaultMessage: string;
|
defaultMessage: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function buildLocales() {
|
||||||
|
mkdirpSync(LANG_DIR);
|
||||||
|
|
||||||
|
SUPPORTED_LANGS.map((lang) => {
|
||||||
|
const destPath = `${LANG_DIR}/${lang}.json`;
|
||||||
|
const newMessages = readJSON<Record<string, string>>(destPath);
|
||||||
|
|
||||||
|
keysToRename.forEach(([fromKey, toKey]) => {
|
||||||
|
newMessages[toKey] = newMessages[fromKey];
|
||||||
|
delete newMessages[fromKey];
|
||||||
|
});
|
||||||
|
keysToRemove.forEach((key) => {
|
||||||
|
delete newMessages[key];
|
||||||
|
});
|
||||||
|
keysToUpdate.forEach((key) => {
|
||||||
|
newMessages[`--${key}`] = newMessages[key];
|
||||||
|
newMessages[key] = collectedMessages[key];
|
||||||
|
});
|
||||||
|
keysToAdd.forEach((key) => {
|
||||||
|
newMessages[key] = collectedMessages[key];
|
||||||
|
});
|
||||||
|
|
||||||
|
const sortedKeys: Array<string> = Object.keys(newMessages).sort((key1, key2) => {
|
||||||
|
key1 = key1.replace(/^-+/, '');
|
||||||
|
key2 = key2.replace(/^-+/, '');
|
||||||
|
|
||||||
|
return key1 < key2 || !isNotMarked(key1) ? -1 : 1;
|
||||||
|
});
|
||||||
|
|
||||||
|
const sortedNewMessages = sortedKeys.reduce<typeof newMessages>((acc, key) => {
|
||||||
|
acc[key] = newMessages[key];
|
||||||
|
|
||||||
|
return acc;
|
||||||
|
}, {});
|
||||||
|
|
||||||
|
fs.writeFileSync(destPath, `${JSON.stringify(sortedNewMessages, null, 4)}\n`);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function readJSON<T extends {}>(destPath: string): T {
|
||||||
|
try {
|
||||||
|
return JSON.parse(fs.readFileSync(destPath, 'utf8'));
|
||||||
|
} catch (err) {
|
||||||
|
console.log(chalk.yellow(`Can't read ${destPath}. The new file will be created.`), `(${err.message})`);
|
||||||
|
}
|
||||||
|
|
||||||
|
return {} as T;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Aggregates the default messages that were extracted from the app's
|
* Aggregates the default messages that were extracted from the app's
|
||||||
* React components via the React Intl Babel plugin. An error will be thrown if
|
* React components via the React Intl Babel plugin. An error will be thrown if
|
||||||
@ -117,77 +166,21 @@ if (keysToRename.length) {
|
|||||||
console.log(keysToRename.reduce((str, pair) => [str, pair[0], chalk.yellow(' -> '), pair[1], '\n'].join(''), ''));
|
console.log(keysToRename.reduce((str, pair) => [str, pair[0], chalk.yellow(' -> '), pair[1], '\n'].join(''), ''));
|
||||||
}
|
}
|
||||||
|
|
||||||
prompt.start();
|
prompt([
|
||||||
prompt.get(
|
|
||||||
{
|
{
|
||||||
properties: {
|
type: 'confirm',
|
||||||
apply: {
|
name: 'applyChanges',
|
||||||
description: 'Apply changes? [Y/n]',
|
message: 'Apply changes?',
|
||||||
pattern: /^y|n$/i,
|
default: true,
|
||||||
message: 'Please enter "y" or "n"',
|
|
||||||
default: 'y',
|
|
||||||
before: (value) => value.toLowerCase() === 'y',
|
|
||||||
},
|
},
|
||||||
},
|
]).then(({ applyChanges }) => {
|
||||||
},
|
if (!applyChanges) {
|
||||||
(err, resp) => {
|
console.log(chalk.red('Aborted'));
|
||||||
console.log('\n');
|
|
||||||
|
|
||||||
if (err || !resp.apply) {
|
return;
|
||||||
return console.log(chalk.red('Aborted'));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
buildLocales();
|
buildLocales();
|
||||||
|
|
||||||
console.log(chalk.green('All locales was successfuly built'));
|
console.log(chalk.green('All locales was successfuly built'));
|
||||||
},
|
|
||||||
);
|
|
||||||
|
|
||||||
function buildLocales() {
|
|
||||||
mkdirpSync(LANG_DIR);
|
|
||||||
|
|
||||||
SUPPORTED_LANGS.map((lang) => {
|
|
||||||
const destPath = `${LANG_DIR}/${lang}.json`;
|
|
||||||
const newMessages = readJSON<Record<string, string>>(destPath);
|
|
||||||
|
|
||||||
keysToRename.forEach(([fromKey, toKey]) => {
|
|
||||||
newMessages[toKey] = newMessages[fromKey];
|
|
||||||
delete newMessages[fromKey];
|
|
||||||
});
|
});
|
||||||
keysToRemove.forEach((key) => {
|
|
||||||
delete newMessages[key];
|
|
||||||
});
|
|
||||||
keysToUpdate.forEach((key) => {
|
|
||||||
newMessages[`--${key}`] = newMessages[key];
|
|
||||||
newMessages[key] = collectedMessages[key];
|
|
||||||
});
|
|
||||||
keysToAdd.forEach((key) => {
|
|
||||||
newMessages[key] = collectedMessages[key];
|
|
||||||
});
|
|
||||||
|
|
||||||
const sortedKeys: Array<string> = Object.keys(newMessages).sort((key1, key2) => {
|
|
||||||
key1 = key1.replace(/^-+/, '');
|
|
||||||
key2 = key2.replace(/^-+/, '');
|
|
||||||
|
|
||||||
return key1 < key2 || !isNotMarked(key1) ? -1 : 1;
|
|
||||||
});
|
|
||||||
|
|
||||||
const sortedNewMessages = sortedKeys.reduce<typeof newMessages>((acc, key) => {
|
|
||||||
acc[key] = newMessages[key];
|
|
||||||
|
|
||||||
return acc;
|
|
||||||
}, {});
|
|
||||||
|
|
||||||
fs.writeFileSync(destPath, `${JSON.stringify(sortedNewMessages, null, 4)}\n`);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function readJSON<T extends {}>(destPath: string): T {
|
|
||||||
try {
|
|
||||||
return JSON.parse(fs.readFileSync(destPath, 'utf8'));
|
|
||||||
} catch (err) {
|
|
||||||
console.log(chalk.yellow(`Can't read ${destPath}. The new file will be created.`), `(${err.message})`);
|
|
||||||
}
|
|
||||||
|
|
||||||
return {} as T;
|
|
||||||
}
|
|
||||||
|
Loading…
Reference in New Issue
Block a user