UNPKG

comindware.core.ui

Version:

Comindware Core UI provides the basic components like editors, lists, dropdowns, popups that we so desperately need while creating Marionette-based single-page applications.

66 lines (56 loc) 3.01 kB
const fs = require('fs'); const exec = require('child_process').exec; const pathResolver = require('../pathResolver'); // ### // This task requires Comindware Localization Tool to be installed in PATH. // ### module.exports = callback => { const localizerBin = 'Localization.Export.exe'; const localizationResources = 'http://comindware.com/text#core'; const localizationSource = pathResolver.localizationSource('localization.n3'); const localizationDestination = pathResolver.compiled('localization/temp/localization.js'); const localizationCommand = `${localizerBin} --export js --source "${localizationSource}" --destination "${localizationDestination}"` + ` -r ${localizationResources} --languages en ru de`; !fs.existsSync(pathResolver.compiled()) && fs.mkdirSync(pathResolver.compiled()); !fs.existsSync(pathResolver.compiled('localization')) && fs.mkdirSync(pathResolver.compiled('localization')); if (!fs.existsSync(pathResolver.compiled('localization/temp'))) { fs.mkdirSync(pathResolver.compiled('localization/temp')); } try { exec(localizationCommand, (err, stdout, stderr) => { if (err) { console.error('Cannot find localization.exe. Please ensure what Localization tool have been installed.'); callback(); return; } console.log(stdout); console.log(stderr); fs.readdirSync(pathResolver.compiled('localization/temp')).forEach(fileName => { const langCode = fileName.substr(16, 2); let fileContent = fs.readFileSync(pathResolver.compiled(`localization/temp/${fileName}`), 'utf8'); // We call Function because the fileContent still isn't a valid JSON. fileContent = `return ${fileContent.substring(fileContent.indexOf('var LANGMAP') + 16)}`; const data = (new Function(fileContent))(); // jshint ignore:line fs.writeFileSync(pathResolver.compiled(`localization/localization.${langCode}.json`), JSON.stringify(data), 'utf8'); }); const deleteFolderRecursive = path => { if (fs.existsSync(path)) { fs.readdirSync(path).forEach(file => { const curPath = `${path}/${file}`; if (fs.lstatSync(curPath).isDirectory()) { deleteFolderRecursive(curPath); } else { fs.unlinkSync(curPath); } }); fs.rmdirSync(path); } }; deleteFolderRecursive(pathResolver.compiled('localization/temp/')); callback(err); }); } catch (e) { console.log('Failed to start localization tool. Considering it unimportant and continue.'); callback(); } };