UNPKG

better-crowdin

Version:

Crowdin CLI on steroids

53 lines (47 loc) 1.74 kB
const chalk = require('chalk'); const getCrowdinBranch = require('../utils/getCrowdinBranch'); const getTranslationStatus = require('../utils/getTranslationStatus'); const logCommand = require('../utils/logCommand'); function printLanguageStatus(lang, status) { console.log(`- ${chalk.green(lang)}`); let allTranslated = true; Object.entries(status).forEach(([source, { phrases, translated }]) => { const fileTranslated = phrases === translated; const count = fileTranslated ? chalk.green(`${translated} / ${phrases}`) : chalk.red(`${translated} / ${phrases}`); console.log(` - ${source}. ${count}`); allTranslated = allTranslated && fileTranslated; }); return allTranslated; } module.exports = { command: 'status', aliases: ['$0'], describe: 'Get translation status of the current branch', async handler(argv) { const branch = await getCrowdinBranch(argv); logCommand(argv, 'status', branch); const translationsStatus = await getTranslationStatus(argv, branch); let allTranslated = true; Object.entries(translationsStatus).forEach(([lang, status]) => { if (!argv.skipValidation.includes(lang)) { allTranslated = printLanguageStatus(lang, status) && allTranslated; } }); if (argv.skipValidation.length > 0) { console.log(''); console.log(chalk.bold('Ignored languages:')); argv.skipValidation.forEach((lang) => { printLanguageStatus(lang, translationsStatus[lang]); }); } if (allTranslated) { console.log(chalk.green('Everything fully translated. Enjoy!')); process.exit(0); } else { console.error(chalk.red('Not fully translated, aborting')); process.exit(1); } }, };