const path = require('path'); const fs = require('fs'); const { promisify } = require('util'); const log = require('loglevel'); const readFile = promisify(fs.readFile); function getLocalePath(code) { return path.resolve( __dirname, '..', '..', 'app', '_locales', code, 'messages.json', ); } async function getLocale(code) { try { const localeFilePath = getLocalePath(code); const fileContents = await readFile(localeFilePath, 'utf8'); return JSON.parse(fileContents); } catch (e) { if (e.code === 'ENOENT') { log.error('Locale file not found'); } else { log.error(`Error opening your locale ("${code}") file: `, e); } process.exit(1); } } function compareLocalesForMissingItems({ base, subject }) { return Object.keys(base).filter((key) => !subject[key]); } function compareLocalesForMissingDescriptions({ englishLocale, targetLocale }) { return Object.keys(englishLocale).filter( (key) => targetLocale[key] !== undefined && englishLocale[key].description !== undefined && englishLocale[key].description !== targetLocale[key].description, ); } module.exports = { compareLocalesForMissingDescriptions, compareLocalesForMissingItems, getLocale, getLocalePath, };