From 77df341740ce3f99b8237e86f9cedb693ac35ebf Mon Sep 17 00:00:00 2001
From: ezsh <ezsh.junk@gmail.com>
Date: Wed, 17 Mar 2021 02:36:04 +0100
Subject: [PATCH] gulp: generate tasks to build themes

---
 gulpfile.js | 24 +++++++++++++++++++++++-
 1 file changed, 23 insertions(+), 1 deletion(-)

diff --git a/gulpfile.js b/gulpfile.js
index de5f9634357..d62153442d4 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -170,6 +170,17 @@ function prepareComponent(name) {
 	return r;
 }
 
+function makeThemeCompilationTask(themeName) {
+	const taskName = `make-theme-${themeName}`;
+	gulp.task(taskName, function() {
+		return gulp.src(`themes/${themeName}/**/*.css`)
+			.pipe(sort())
+			.pipe(concat(`${themeName}.css`))
+			.pipe(gulp.dest(cfg.dirs.output));
+	});
+	return taskName;
+}
+
 function moveHTMLInPlace(cb) {
 	fs.rename(path.join(cfg.dirs.intermediate, htmlOut), path.join(cfg.dirs.output, cfg.output), cb);
 }
@@ -192,5 +203,16 @@ if (fs.statSync('.git').isDirectory()) {
 	gulp.task('buildHTML', gulp.series(prepare, 'compileStory'));
 }
 
+const themeTasks = [];
+for (const entry of fs.readdirSync('themes')) {
+	if (fs.statSync(path.join('themes', entry)).isDirectory()) {
+		themeTasks.push(makeThemeCompilationTask(entry));
+	}
+}
+
+exports.html = gulp.series('buildHTML', moveHTMLInPlace);
+exports.themes = gulp.parallel(themeTasks);
 exports.clean = clean;
-exports.default = gulp.series('buildHTML', moveHTMLInPlace);
+
+exports.default = exports.html;
+exports.all = gulp.parallel(exports.html, exports.themes);
-- 
GitLab