feat: Lint curriculum, including test yaml

This commit is contained in:
Oliver Eyton-Williams
2019-04-12 16:44:14 +02:00
committed by mrugesh
parent 7d4dc382b4
commit 538e0bbee3
9 changed files with 491 additions and 97 deletions

View File

@ -1,9 +1,17 @@
const fs = require('fs-extra');
const gulp = require('gulp');
const through2 = require('through2');
const markdownlint = require('markdownlint');
const { locale } = require('../config/env.json');
const { getChallengesForLang } = require('./getChallenges');
const { testedLangs } = require('./utils');
const lintYAML = require('./tools/markdown-yaml');
const lintConfig = require('./tools/.markdownlintrc.js');
/**
* Tasks
**/
function generateCurriculum(done) {
return getChallengesForLang(locale)
@ -21,7 +29,36 @@ function watchFiles() {
return gulp.watch('./challenges/**/*.md', generateCurriculum);
}
function lint() {
return gulp.src(globLangs(testedLangs()), { read: false }).pipe(
through2.obj(function obj(file, enc, next) {
const options = {
files: [file.path],
config: lintConfig,
customRules: [lintYAML]
};
markdownlint(options, function callback(err, result) {
const resultString = (result || '').toString();
if (resultString) {
process.exitCode = 1;
console.log(resultString);
}
next(err, file);
});
})
);
}
const defaultTask = gulp.series(generateCurriculum, watchFiles);
/**
* Helper functions
**/
function globLangs(langs) {
return langs.map(lang => `./challenges/${lang}/**/*.md`);
}
gulp.task('default', defaultTask);
gulp.task('build', generateCurriculum);
gulp.task('lint', lint);