chore: Apply linting fixes

This commit is contained in:
Bouncey
2019-02-16 08:37:36 +00:00
committed by mrugesh mohapatra
parent 25fd85b321
commit 74e6e6ffc1
3 changed files with 69 additions and 144 deletions

View File

@ -16,7 +16,7 @@ function generateCurriculum(done) {
fs.writeFile( fs.writeFile(
`./build/curriculum-${locale}.json`, `./build/curriculum-${locale}.json`,
JSON.stringify(curriculum) JSON.stringify(curriculum)
) );
}) })
.then(done); .then(done);
} }

View File

@ -2,12 +2,8 @@ const fs = require('fs-extra');
const path = require('path'); const path = require('path');
const YAML = require('js-yaml'); const YAML = require('js-yaml');
const readDirP = require('readdirp-walk'); const readDirP = require('readdirp-walk');
const { const { parseMarkdown } = require('@freecodecamp/challenge-md-parser');
parseMarkdown const { Translate } = require('@google-cloud/translate');
} = require('@freecodecamp/challenge-md-parser');
const {
Translate
} = require('@google-cloud/translate');
const lang = 'pt'; const lang = 'pt';
const langFull = 'portuguese'; const langFull = 'portuguese';
@ -16,66 +12,61 @@ const outputDir = path.resolve(__dirname, `./challenges/${langFull}`);
fs.ensureDirSync(outputDir); fs.ensureDirSync(outputDir);
readDirP({ readDirP({
root: path.resolve(__dirname, `./challenges/english`) root: path.resolve(__dirname, './challenges/english')
}) }).on('data', translateChallenge);
.on('data', translateChallenge);
async function translateChallenge(file) { async function translateChallenge(file) {
const { const { name, path: filePath, fullPath, stat } = file;
name, if (stat.isDirectory() || name === '.DS_Store') {
depth, return null;
path: filePath, }
fullPath,
stat
} = file;
if (stat.isDirectory() || name === '.DS_Store') return null;
const blockName = getBlockNameFromPath(filePath); const blockName = getBlockNameFromPath(filePath);
const { const { fileName: superBlock } = superBlockInfoFromPath(filePath);
fileName: superBlock const outputFile = `${outputDir}/${superBlock}/${blockName}/${name.replace(
} = superBlockInfoFromPath(filePath); 'english',
const outputFile = `${outputDir}/${superBlock}/${blockName}/${name.replace('english', langFull)}`; langFull
if (fs.existsSync(outputFile)) return null; )}`;
if (fs.existsSync(outputFile)) {
return null;
}
const challenge = await parseMarkdown(fullPath); const challenge = await parseMarkdown(fullPath);
const { const { title, description, instructions, tests } = challenge;
title,
description,
instructions,
tests
} = challenge;
challenge['videoUrl'] = ''; challenge['videoUrl'] = '';
if (challenge['guideUrl']) challenge['guideUrl'] = challenge['guideUrl'].replace('www', langFull); if (challenge['guideUrl']) {
challenge['guideUrl'] = challenge['guideUrl'].replace('www', langFull);
}
const translatePromises = [ const translatePromises = [
translateText(title), translateText(title),
translateText(description), translateText(description),
translateText(instructions), translateText(instructions),
...tests.map(test => new Promise(async (resolve, reject) => { ...tests.map(
const { test =>
testString, new Promise(async(resolve, reject) => {
text const { testString, text } = test;
} = test; const translatedText = await translateText(text).catch(reject);
const translatedText = await translateText(text); return resolve({
return resolve({ text: translatedText ? translatedText.join(' ').trim() : '',
text: translatedText ? translatedText.join(' ').trim() : '', testString
testString });
}); })
} )
))
]; ];
return Promise.all(translatePromises).then(([title, description, instructions, ...tests]) => { return Promise.all(translatePromises).then(
([title, description, instructions, ...tests]) => {
const { const {
description: oldDescription = [], files = {},
instructions: oldInstructions = [], solutions = [],
files = {}, ...challengeMeta
tests: oldTests = [], } = challenge;
solutions = [], const md = `---
...challengeMeta ${YAML.dump(
} = challenge; Object.assign(challengeMeta, {
const md = `--- localeTitle: title ? title.join(' ').trim() : ''
${YAML.dump(Object.assign(challengeMeta, {localeTitle: title ? title.join(' ').trim() : ''}), { lineWidth: 10000 })}--- }),
{ lineWidth: 10000 }
)}---
## Description ## Description
${description} ${description}
@ -101,42 +92,35 @@ ${generateChallengeSeed(files)}
<section id='solution'> <section id='solution'>
${ ${
solutions.length === 0 solutions.length === 0
? `\`\`\`js ? `\`\`\`js
// solution required // solution required
\`\`\`` \`\`\``
: solutions : solutions
.map( .map(
solution => ` solution => `
\`\`\`js \`\`\`js
${solution} ${solution}
\`\`\` \`\`\`
` `
) )
.join('\n') .join('\n')
} }
</section> </section>
`; `;
console.log(outputFile); console.log(outputFile);
fs.ensureFileSync(outputFile); fs.ensureFileSync(outputFile);
fs.writeFile(outputFile, md); fs.writeFile(outputFile, md);
}
);
});
} }
function generateChallengeSeed(files) { function generateChallengeSeed(files) {
return Object.keys(files) return Object.keys(files)
.map(key => files[key]) .map(key => files[key])
.map(file => { .map(file => {
const { const { ext, contents = [], head = [], tail = [] } = file;
ext,
contents = [],
head = [],
tail = []
} = file;
return ` return `
<div id='${ext}-seed'> <div id='${ext}-seed'>
@ -175,22 +159,25 @@ console.info('after the test');
}); });
} }
const createTranslateText = target => (text) => { const createTranslateText = target => text => {
if (!text) return ''; if (!text) {
return '';
}
const translate = new Translate(); const translate = new Translate();
return translate return translate
.translate(text, target) .translate(text, target)
.then(results => { .then(results => {
let translations = results[0]; let translations = results[0];
translations = Array.isArray(translations) ? translations = Array.isArray(translations)
translations : [translations]; ? translations
: [translations];
return translations; return translations;
}) })
.catch(err => { .catch(err => {
console.log(err); console.log(err);
}); });
} };
const translateText = createTranslateText(lang); const translateText = createTranslateText(lang);
@ -199,7 +186,6 @@ function superBlockInfoFromPath(filePath) {
return superBlockInfo(maybeSuper); return superBlockInfo(maybeSuper);
} }
function superBlockInfo(fileName) { function superBlockInfo(fileName) {
const [maybeOrder, ...superBlock] = fileName.split('-'); const [maybeOrder, ...superBlock] = fileName.split('-');
let order = parseInt(maybeOrder, 10); let order = parseInt(maybeOrder, 10);
@ -221,63 +207,3 @@ function getBlockNameFromPath(filePath) {
const [, block] = filePath.split('/'); const [, block] = filePath.split('/');
return block; return block;
} }
// const curriculum = {
// 'responsive-web-design': {}
// }
// getChallenges().forEach(block => {
// const {
// name,
// order,
// challenges,
// time = '',
// superBlock,
// superOrder,
// template = '',
// required = [],
// ...restBlock
// } = block;
// const blockDashedName = dasherize(name);
// const blockMeta = {
// name,
// dashedName: blockDashedName,
// order,
// time,
// template,
// required,
// superBlock,
// superOrder,
// challengeOrder: challenges.map(({ id, title }) => [id, title]),
// ...restBlock
// };
// const superOrderPrefix = `0${superOrder}`;
// const outputDir = path.resolve(
// __dirname,
// `./challenges/english/${superOrderPrefix}-${superBlock}/${blockDashedName}`
// );
// fs.ensureDirSync(outputDir);
// challenges.forEach(challenge => {
// const {
// description: oldDescription = [],
// files = {},
// tests = [],
// solutions = [],
// ...restChallenge
// } = challenge;
// const challengeMeta = omit(restChallenge, blackListedFieldNames);
// const challengeFileName = `${dasherize(challenge.title)}.english.md`;
// let description = '';
// let instructions = '';
// const hrIndex = findLastIndex(oldDescription, el =>
// (/^<hr\s?\/?>$/).test(el)
// );
// if (hrIndex && hrIndex !== -1) {
// description = oldDescription.slice(0, hrIndex).join('\n');
// instructions = oldDescription.slice(hrIndex + 1).join('\n');
// } else {
// description = oldDescription.join('\n');
// }

View File

@ -19,8 +19,7 @@
"lint": "eslint ./**/*.js --fix", "lint": "eslint ./**/*.js --fix",
"semantic-release": "semantic-release", "semantic-release": "semantic-release",
"pretest": "cd ../client && npm run build:workers", "pretest": "cd ../client && npm run build:workers",
"test": "mocha --delay --reporter progress --bail", "test": "mocha --delay --reporter progress --bail"
}, },
"dependencies": { "dependencies": {
"invariant": "^2.2.4" "invariant": "^2.2.4"