51 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
const fs = require('fs-extra');
 | 
						|
const gulp = require('gulp');
 | 
						|
const through2 = require('through2');
 | 
						|
 | 
						|
const { locale } = require('../config/env.json');
 | 
						|
const { getChallengesForLang } = require('./getChallenges');
 | 
						|
const { testedLangs } = require('./utils');
 | 
						|
const lintMarkdown = require('../tools/scripts/lint');
 | 
						|
 | 
						|
/**
 | 
						|
 * Tasks
 | 
						|
 **/
 | 
						|
 | 
						|
function generateCurriculum(done) {
 | 
						|
  return getChallengesForLang(locale)
 | 
						|
    .then(curriculum => {
 | 
						|
      fs.ensureFileSync(`./build/curriculum-${locale}.json`);
 | 
						|
      fs.writeFile(
 | 
						|
        `./build/curriculum-${locale}.json`,
 | 
						|
        JSON.stringify(curriculum)
 | 
						|
      );
 | 
						|
    })
 | 
						|
    .then(done);
 | 
						|
}
 | 
						|
 | 
						|
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) {
 | 
						|
      lintMarkdown(file, next);
 | 
						|
    })
 | 
						|
  );
 | 
						|
}
 | 
						|
 | 
						|
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);
 |