fix(curriculum): use js-yaml to parse certs
This commit is contained in:
committed by
Mrugesh Mohapatra
parent
427444c757
commit
6abfcd8608
@ -1,7 +1,7 @@
|
|||||||
const path = require('path');
|
const path = require('path');
|
||||||
const { findIndex, reduce, toString } = require('lodash');
|
const { findIndex, reduce, toString } = require('lodash');
|
||||||
const readDirP = require('readdirp');
|
const readDirP = require('readdirp');
|
||||||
const { parseMarkdown } = require('../tools/challenge-md-parser');
|
const yaml = require('js-yaml');
|
||||||
const { parseMD } = require('../tools/challenge-md-parser/mdx');
|
const { parseMD } = require('../tools/challenge-md-parser/mdx');
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
const util = require('util');
|
const util = require('util');
|
||||||
@ -127,6 +127,10 @@ function getMetaForBlock(block) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function parseCert(filePath) {
|
||||||
|
return yaml.load(fs.readFileSync(filePath, 'utf8'));
|
||||||
|
}
|
||||||
|
|
||||||
exports.getChallengesDirForLang = getChallengesDirForLang;
|
exports.getChallengesDirForLang = getChallengesDirForLang;
|
||||||
exports.getMetaForBlock = getMetaForBlock;
|
exports.getMetaForBlock = getMetaForBlock;
|
||||||
|
|
||||||
@ -164,7 +168,7 @@ exports.getChallengesForLang = async function getChallengesForLang(lang) {
|
|||||||
return walk(
|
return walk(
|
||||||
root,
|
root,
|
||||||
curriculum,
|
curriculum,
|
||||||
{ type: 'files', fileFilter: ['*.md', '*.markdown'] },
|
{ type: 'files', fileFilter: ['*.md', '*.yml'] },
|
||||||
cb
|
cb
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
@ -261,21 +265,13 @@ ${getFullPath('english')}
|
|||||||
// while the auditing is ongoing, we default to English for un-audited certs
|
// while the auditing is ongoing, we default to English for un-audited certs
|
||||||
// once that's complete, we can revert to using isEnglishChallenge(fullPath)
|
// once that's complete, we can revert to using isEnglishChallenge(fullPath)
|
||||||
const useEnglish = lang === 'english' || !isAuditedCert(lang, superBlock);
|
const useEnglish = lang === 'english' || !isAuditedCert(lang, superBlock);
|
||||||
const isCert = path.extname(filePath) === '.markdown';
|
const isCert = path.extname(filePath) === '.yml';
|
||||||
let challenge;
|
let challenge;
|
||||||
|
|
||||||
if (isCert) {
|
if (isCert) {
|
||||||
// TODO: this uses the old parser to handle certifcates, but Markdown is a
|
|
||||||
// clunky way to store data, consider converting to YAML and removing the
|
|
||||||
// old parser.
|
|
||||||
challenge = await (useEnglish
|
challenge = await (useEnglish
|
||||||
? parseMarkdown(getFullPath('english'))
|
? parseCert(getFullPath('english'))
|
||||||
: parseTranslation(
|
: parseCert(getFullPath(lang)));
|
||||||
getFullPath(lang),
|
|
||||||
COMMENT_TRANSLATIONS,
|
|
||||||
lang,
|
|
||||||
parseMarkdown
|
|
||||||
));
|
|
||||||
} else {
|
} else {
|
||||||
challenge = await (useEnglish
|
challenge = await (useEnglish
|
||||||
? parseMD(getFullPath('english'))
|
? parseMD(getFullPath('english'))
|
||||||
|
39
curriculum/package-lock.json
generated
39
curriculum/package-lock.json
generated
@ -1316,13 +1316,10 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"argparse": {
|
"argparse": {
|
||||||
"version": "1.0.10",
|
"version": "2.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
|
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
|
||||||
"integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
|
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
|
||||||
"dev": true,
|
"dev": true
|
||||||
"requires": {
|
|
||||||
"sprintf-js": "~1.0.2"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"arr-diff": {
|
"arr-diff": {
|
||||||
"version": "4.0.0",
|
"version": "4.0.0",
|
||||||
@ -4953,13 +4950,12 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"js-yaml": {
|
"js-yaml": {
|
||||||
"version": "3.14.0",
|
"version": "4.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz",
|
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz",
|
||||||
"integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==",
|
"integrity": "sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"argparse": "^1.0.7",
|
"argparse": "^2.0.1"
|
||||||
"esprima": "^4.0.0"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"jsbn": {
|
"jsbn": {
|
||||||
@ -5497,6 +5493,15 @@
|
|||||||
"picomatch": "^2.0.4"
|
"picomatch": "^2.0.4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"argparse": {
|
||||||
|
"version": "1.0.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
|
||||||
|
"integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"sprintf-js": "~1.0.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
"binary-extensions": {
|
"binary-extensions": {
|
||||||
"version": "2.1.0",
|
"version": "2.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz",
|
||||||
@ -5643,6 +5648,16 @@
|
|||||||
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
|
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"js-yaml": {
|
||||||
|
"version": "3.14.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz",
|
||||||
|
"integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"argparse": "^1.0.7",
|
||||||
|
"esprima": "^4.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"locate-path": {
|
"locate-path": {
|
||||||
"version": "6.0.0",
|
"version": "6.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
|
||||||
|
@ -48,6 +48,7 @@
|
|||||||
"invariant": "^2.2.4",
|
"invariant": "^2.2.4",
|
||||||
"joi": "^13.3.0",
|
"joi": "^13.3.0",
|
||||||
"joi-objectid": "^2.0.0",
|
"joi-objectid": "^2.0.0",
|
||||||
|
"js-yaml": "^4.0.0",
|
||||||
"jsdom": "^12.2.0",
|
"jsdom": "^12.2.0",
|
||||||
"live-server": "^1.2.1",
|
"live-server": "^1.2.1",
|
||||||
"lodash": "^4.17.20",
|
"lodash": "^4.17.20",
|
||||||
|
Reference in New Issue
Block a user