const eslint = require('gulp-eslint'); const { exec } = require('child_process'); const gulp = require('gulp'); const path = require('path'); const prettier = require('gulp-prettier'); function execCb(cb, err, stdout, stderr) { console.log(stdout); console.error(stderr); cb(err); } const options = { coveragePaths: [ '*.js', 'packages/**/*.js', '!packages/**/test/*.js', '!packages/**/test/**/*.js', '!packages/**/static/*.js', ], lintPaths: ['*.js', 'packages/**/*.js', '!packages/**/static/*.js'], nodeBin: path.resolve(__dirname, './packages/jsdoc/jsdoc.js'), nodePath: process.execPath, }; function coverage(cb) { const cmd = `./node_modules/.bin/nyc --reporter=html ${options.nodeBin} -T`; return exec(cmd, execCb.bind(null, cb)); } function format() { return gulp.src(options.lintPaths).pipe(prettier()); } function lint() { return gulp .src(options.lintPaths) .pipe(eslint()) .pipe(eslint.formatEach()) .pipe(eslint.failAfterError()); } function test(cb) { const cmd = `${options.nodePath} "${options.nodeBin}" -T`; return exec(cmd, execCb.bind(null, cb)); } exports.coverage = coverage; exports.default = gulp.series(lint, test); exports.format = format; exports.lint = lint; exports.test = test;