feat: Lint curriculum, including test yaml
This commit is contained in:
committed by
mrugesh
parent
7d4dc382b4
commit
538e0bbee3
@ -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);
|
||||
|
Reference in New Issue
Block a user