diff --git a/curriculum/gulpfile.js b/curriculum/gulpfile.js
index 82fef6f6d1..18a66cb26e 100644
--- a/curriculum/gulpfile.js
+++ b/curriculum/gulpfile.js
@@ -16,7 +16,7 @@ function generateCurriculum(done) {
fs.writeFile(
`./build/curriculum-${locale}.json`,
JSON.stringify(curriculum)
- )
+ );
})
.then(done);
}
diff --git a/curriculum/md-translation.js b/curriculum/md-translation.js
index 98c9c567de..98c2be5d3e 100644
--- a/curriculum/md-translation.js
+++ b/curriculum/md-translation.js
@@ -2,12 +2,8 @@ const fs = require('fs-extra');
const path = require('path');
const YAML = require('js-yaml');
const readDirP = require('readdirp-walk');
-const {
- parseMarkdown
-} = require('@freecodecamp/challenge-md-parser');
-const {
- Translate
-} = require('@google-cloud/translate');
+const { parseMarkdown } = require('@freecodecamp/challenge-md-parser');
+const { Translate } = require('@google-cloud/translate');
const lang = 'pt';
const langFull = 'portuguese';
@@ -16,66 +12,61 @@ const outputDir = path.resolve(__dirname, `./challenges/${langFull}`);
fs.ensureDirSync(outputDir);
readDirP({
- root: path.resolve(__dirname, `./challenges/english`)
- })
- .on('data', translateChallenge);
+ root: path.resolve(__dirname, './challenges/english')
+}).on('data', translateChallenge);
async function translateChallenge(file) {
- const {
- name,
- depth,
- path: filePath,
- fullPath,
- stat
- } = file;
- if (stat.isDirectory() || name === '.DS_Store') return null;
+ const { name, path: filePath, fullPath, stat } = file;
+ if (stat.isDirectory() || name === '.DS_Store') {
+ return null;
+ }
const blockName = getBlockNameFromPath(filePath);
- const {
- fileName: superBlock
- } = superBlockInfoFromPath(filePath);
- const outputFile = `${outputDir}/${superBlock}/${blockName}/${name.replace('english', langFull)}`;
- if (fs.existsSync(outputFile)) return null;
+ const { fileName: superBlock } = superBlockInfoFromPath(filePath);
+ const outputFile = `${outputDir}/${superBlock}/${blockName}/${name.replace(
+ 'english',
+ langFull
+ )}`;
+ if (fs.existsSync(outputFile)) {
+ return null;
+ }
const challenge = await parseMarkdown(fullPath);
- const {
- title,
- description,
- instructions,
- tests
- } = challenge;
+ const { title, description, instructions, tests } = challenge;
challenge['videoUrl'] = '';
- if (challenge['guideUrl']) challenge['guideUrl'] = challenge['guideUrl'].replace('www', langFull);
+ if (challenge['guideUrl']) {
+ challenge['guideUrl'] = challenge['guideUrl'].replace('www', langFull);
+ }
const translatePromises = [
translateText(title),
translateText(description),
translateText(instructions),
- ...tests.map(test => new Promise(async (resolve, reject) => {
- const {
- testString,
- text
- } = test;
- const translatedText = await translateText(text);
- return resolve({
- text: translatedText ? translatedText.join(' ').trim() : '',
- testString
- });
- }
-
- ))
+ ...tests.map(
+ test =>
+ new Promise(async(resolve, reject) => {
+ const { testString, text } = test;
+ const translatedText = await translateText(text).catch(reject);
+ return resolve({
+ text: translatedText ? translatedText.join(' ').trim() : '',
+ testString
+ });
+ })
+ )
];
- return Promise.all(translatePromises).then(([title, description, instructions, ...tests]) => {
-
- const {
- description: oldDescription = [],
- instructions: oldInstructions = [],
- files = {},
- tests: oldTests = [],
- solutions = [],
- ...challengeMeta
- } = challenge;
- const md = `---
-${YAML.dump(Object.assign(challengeMeta, {localeTitle: title ? title.join(' ').trim() : ''}), { lineWidth: 10000 })}---
+ return Promise.all(translatePromises).then(
+ ([title, description, instructions, ...tests]) => {
+ const {
+ files = {},
+ solutions = [],
+ ...challengeMeta
+ } = challenge;
+ const md = `---
+${YAML.dump(
+ Object.assign(challengeMeta, {
+ localeTitle: title ? title.join(' ').trim() : ''
+ }),
+ { lineWidth: 10000 }
+ )}---
## Description
${description}
@@ -101,42 +92,35 @@ ${generateChallengeSeed(files)}