UNPKG

format-message-cli

Version:

Command-line tools to lint, extract, and inline format-message translations

68 lines (63 loc) 1.75 kB
'use strict' var fs = require('fs') var CLIEngine = require('eslint').CLIEngine module.exports = function extractFiles (files, options) { var baseConfig = { parserOptions: { ecmaFeatures: { jsx: true }, ecmaVersion: 2019, sourceType: 'module' }, plugins: ['format-message'], settings: { 'format-message': { sourceLocale: options.locale, generateId: options.generateId, translations: options.translations } } } // This conditionally adds either the extends or rules config option. // Both can not be set as rules always overrides extends even if rules does // not have a valid value. if (options.extends) { baseConfig.extends = options.extends } if (options.customrules) { baseConfig.rules = options.customrules } var cli = new CLIEngine({ useEslintrc: false, envs: ['es6', 'browser', 'node'], baseConfig: baseConfig }) var report = { results: [], errorCount: 0, warningCount: 0 } forEachFile(files, function (source) { var subreport = cli.executeOnText(source.sourceCode, source.sourceFileName) report.results = report.results.concat(subreport.results) report.errorCount += subreport.errorCount report.warningCount += subreport.warningCount }) var format = cli.getFormatter(options.style) var formatted = format(report.results) if (formatted) console.error(formatted) process.exit(report.errorCount) } function forEachFile (files, fn) { files.map(function (file) { var source = file if (typeof file === 'string') { source = { sourceFileName: file, sourceCode: fs.readFileSync(file, 'utf8') } } return source }).forEach(fn) }