summaryrefslogtreecommitdiff
path: root/src/server/web/docs/gulpfile.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/web/docs/gulpfile.ts')
-rw-r--r--src/server/web/docs/gulpfile.ts77
1 files changed, 77 insertions, 0 deletions
diff --git a/src/server/web/docs/gulpfile.ts b/src/server/web/docs/gulpfile.ts
new file mode 100644
index 0000000000..7b36cf6675
--- /dev/null
+++ b/src/server/web/docs/gulpfile.ts
@@ -0,0 +1,77 @@
+/**
+ * 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/server/web/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/server/web/docs/${name}.${lang}.pug`,
+ };
+ pug.renderFile(file, vars, (renderErr, content) => {
+ if (renderErr) {
+ console.error(renderErr);
+ return;
+ }
+
+ pug.renderFile('./src/server/web/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/server/web/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/server/web/docs/**/*.styl')
+ .pipe(stylus())
+ .pipe((cssnano as any)())
+ .pipe(gulp.dest('./built/server/web/docs/assets/'))
+);