/** * Gulp tasks */ import * as fs from 'fs'; import * as path from 'path'; import * as glob from 'glob'; import * as gulp from 'gulp'; import * as pug from 'pug'; import * as mkdirp from 'mkdirp'; import stylus = require('gulp-stylus'); import cssnano = require('gulp-cssnano'); import I18nReplacer from '../../build/i18n'; import fa from '../../build/fa'; import generateVars from './vars'; require('./api/gulpfile.ts'); gulp.task('doc', [ 'doc:docs', 'doc:api', 'doc:styles' ]); gulp.task('doc:docs', async () => { const commonVars = await generateVars(); glob('./src/client/docs/**/*.*.pug', (globErr, files) => { if (globErr) { console.error(globErr); return; } files.forEach(file => { const [, name, lang] = file.match(/docs\/(.+?)\.(.+?)\.pug$/); const vars = { common: commonVars, lang: lang, title: fs.readFileSync(file, 'utf-8').match(/^h1 (.+?)\r?\n/)[1], src: `https://github.com/syuilo/misskey/tree/master/src/client/docs/${name}.${lang}.pug`, }; pug.renderFile(file, vars, (renderErr, content) => { if (renderErr) { console.error(renderErr); return; } pug.renderFile('./src/client/docs/layout.pug', Object.assign({}, vars, { content }), (renderErr2, html) => { if (renderErr2) { console.error(renderErr2); return; } const i18n = new I18nReplacer(lang); html = html.replace(i18n.pattern, i18n.replacement); html = fa(html); const htmlPath = `./built/client/docs/${lang}/${name}.html`; mkdirp(path.dirname(htmlPath), (mkdirErr) => { if (mkdirErr) { console.error(mkdirErr); return; } fs.writeFileSync(htmlPath, html, 'utf-8'); }); }); }); }); }); }); gulp.task('doc:styles', () => gulp.src('./src/client/docs/**/*.styl') .pipe(stylus()) .pipe((cssnano as any)()) .pipe(gulp.dest('./built/client/docs/assets/')) );