chore: Apply linting fixes
This commit is contained in:
committed by
mrugesh mohapatra
parent
25fd85b321
commit
74e6e6ffc1
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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');
|
|
||||||
// }
|
|
||||||
|
@ -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"
|
||||||
|
Reference in New Issue
Block a user