UNPKG

next-translate-scanner

Version:

Scan next-translate code for translations and update json files.

75 lines (74 loc) 4.03 kB
#!/usr/bin/env node "use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const glob_1 = __importDefault(require("glob")); const commander_1 = require("commander"); const logger_1 = __importDefault(require("./utils/logger")); const extract_translations_1 = __importDefault(require("./utils/extract-translations")); const translations_to_namespace_map_1 = __importDefault(require("./utils/translations-to-namespace-map")); const get_config_1 = __importDefault(require("./utils/get-config")); const update_existing_translations_1 = __importDefault(require("./utils/update-existing-translations")); const load_existing_translations_1 = __importDefault(require("./utils/load-existing-translations")); const un_flatten_object_1 = __importDefault(require("./utils/un-flatten-object")); const rimraf_1 = __importDefault(require("rimraf")); const write_translation_files_1 = __importDefault(require("./utils/write-translation-files")); const add_pseudo_locale_1 = __importDefault(require("./utils/add-pseudo-locale")); const pkg = require('../package.json'); commander_1.program .version(pkg.version) .usage('[options] <file ...>') .option('-s, --silent', 'Disable logging to stdout') .option('--config <config>', 'Path to the config file (default: next-translate-scanner.config.js)', 'next-translate-scanner.config.js'); commander_1.program.parse(process.argv); logger_1.default.setSilent(commander_1.program.opts().silent); commander_1.program.on('--help', function () { logger_1.default.info(); logger_1.default.info('Examples:'); logger_1.default.info(' $ next-translate-scanner "src/**/*.{js,jsx,ts,tsx}"'); logger_1.default.info(' $ next-translate-scanner --config custom-scanner.config.js'); }); const { config, inputs } = (0, get_config_1.default)(); const mapYesNo = (condition) => condition ? 'yes' : 'no'; logger_1.default.info(); logger_1.default.info(`next-translate Scanner`); logger_1.default.info(`--------------`); logger_1.default.info(`Input: ${inputs.join(', ')}`); logger_1.default.info(`Output: ${config.output}`); logger_1.default.info(`Locales: [${config.locales.join(', ')}]`); logger_1.default.info(); logger_1.default.info(`KeepRemoved: ${mapYesNo(config.keepRemoved)}`); logger_1.default.info(`ReplaceDefaults: ${mapYesNo(config.replaceDefaults)}`); logger_1.default.info(`FailOnWarnings: ${mapYesNo(config.failOnWarnings)}`); logger_1.default.info(); let allFiles = []; for (const item of inputs) { allFiles = [ ...allFiles, ...glob_1.default.sync(item) ]; } const extractedTranslations = (0, extract_translations_1.default)(allFiles, config); const translationsWithNamespace = (0, translations_to_namespace_map_1.default)(extractedTranslations, config); if (config.failOnWarnings && logger_1.default.getWarningCount() > 0) { logger_1.default.error(`${logger_1.default.getWarningCount()} warnings encountered`, true); } const existingTranslations = (0, load_existing_translations_1.default)(config); let mergedTranslations = (0, update_existing_translations_1.default)(translationsWithNamespace, existingTranslations, config); if (config.pseudoLocale) { mergedTranslations = (0, add_pseudo_locale_1.default)(mergedTranslations, config.pseudoLocale.baseLocale, config.pseudoLocale.locale); } if (!!config.keySeparator) { for (const [locale, namespaces] of Object.entries(mergedTranslations)) { for (const [namespace, translations] of Object.entries(namespaces)) { mergedTranslations[locale][namespace] = (0, un_flatten_object_1.default)(translations, config.keySeparator); } } } if (!config.keepRemoved) { const removePattern = config.output.replace('$LOCALE', '*').replace('$NAMESPACE', '*'); rimraf_1.default.sync(removePattern); } (0, write_translation_files_1.default)(mergedTranslations, config);