From 14b783b22e8e04d6d7d5da68014b2063a683cdb1 Mon Sep 17 00:00:00 2001 From: Jacob Lucas Date: Fri, 25 Jun 2021 16:25:11 +0100 Subject: [PATCH] Added watching, and support for mac and linux --- gulpfile.js | 111 +++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 92 insertions(+), 19 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index 20b6e0e8..8b3c09e1 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -10,14 +10,12 @@ const fs = require('fs'); const src = "./src/" const dest = "./dist/" -const foundryDest = process.env.LOCALAPPDATA + "/FoundryVTT/Data/systems/sw5e"; +const foundryDest = process.platform === "win32" ? process.env.LOCALAPPDATA : process.env.HOME + (process.platform === "darwin" ? "" : "/.local/share") + "/FoundryVTT/Data/systems/sw5e/"; /* ----------------------------------------- */ /* Compile LESS /* ----------------------------------------- */ -const SW5E_LESS = [src + "less/**/*.less"]; - function compileLESS() { return gulp.src(src + "less/original/sw5e.less") .pipe(less()) @@ -48,8 +46,6 @@ const css = gulp.parallel(compileLESS, compileGlobalLess, compileLightLess, comp /* Compile packs /* ----------------------------------------- */ -const SW5E_PACKS = [src + "packs/packs/**"] - function jsonToDB() { return through.obj(async (chunk, enc, cb) => { let result = ""; @@ -73,24 +69,48 @@ function compilePacks() { /* Copy Files /* ----------------------------------------- */ -const SW5E_COPY = [src + "**", "!" + src + "less/**/*.less"] - -async function copy() { - return new Promise((resolve, reject) => { - gulp.src("README.md").pipe(gulp.dest(dest)); +async function copySystemTemplate() { + return new Promise ((resolve, reject) => { gulp.src(src + "system.json").pipe(gulp.dest(dest)); gulp.src(src + "template.json").pipe(gulp.dest(dest)); - gulp.src(src + "sw5e.js").pipe(gulp.dest(dest)); - gulp.src(src + "fonts/**").pipe(gulp.dest(dest + "fonts/")); + resolve(); + }); +} + +async function copyLang() { + return new Promise ((resolve, reject) => { gulp.src(src + "lang/**").pipe(gulp.dest(dest + "lang/")); + resolve(); + }); +} + +async function copyJS() { + return new Promise ((resolve, reject) => { + gulp.src(src + "sw5e.js").pipe(gulp.dest(dest)); gulp.src(src + "module/**").pipe(gulp.dest(dest + "module/")); - gulp.src(src + "packs/icons/**").pipe(gulp.dest(dest + "packs/Icons")); + resolve(); + }); +} + +async function copyTemplates() { + return new Promise ((resolve, reject) => { gulp.src(src + "templates/**").pipe(gulp.dest(dest + "templates/")); + resolve(); + }); +} + +async function copyRemaining() { + return new Promise ((resolve, reject) => { + gulp.src("README.md").pipe(gulp.dest(dest)); + gulp.src(src + "fonts/**").pipe(gulp.dest(dest + "fonts/")); + gulp.src(src + "packs/icons/**").pipe(gulp.dest(dest + "packs/Icons")); gulp.src(src + "ui/**").pipe(gulp.dest(dest + "ui/")); resolve(); }); } +const copy = gulp.parallel(copySystemTemplate, copyLang, copyJS, copyTemplates, copyRemaining) + /* ----------------------------------------- */ /* build /* ----------------------------------------- */ @@ -101,19 +121,72 @@ const build = gulp.parallel(css, compilePacks, copy) /* Send to foundry /* ----------------------------------------- */ -async function copyToFoundry() { - gulp.src(dest + "/**").pipe(gulp.dest(foundryDest)); +async function sendCSSToFoundry() { + return new Promise ((resolve, reject) => { + gulp.src(dest + "*.css").pipe(gulp.dest(foundryDest)); + resolve(); + }); } -const foundry = gulp.series(build, copyToFoundry); +async function sendSystemTemplateToFoundry() { + return new Promise ((resolve, reject) => { + gulp.src(dest + "*.json").pipe(gulp.dest(foundryDest)); + resolve(); + }); +} + +async function sendLangToFoundry() { + return new Promise ((resolve, reject) => { + gulp.src(dest + "lang/**").pipe(gulp.dest(foundryDest + "lang")); + resolve(); + }); +} + +async function sendJSToFoundry() { + return new Promise ((resolve, reject) => { + gulp.src(dest + "sw5e.js").pipe(gulp.dest(foundryDest)); + gulp.src(dest + "module/**").pipe(gulp.dest(foundryDest + "module")); + resolve(); + }); +} + +async function sendPacksToFoundry() { + return new Promise ((resolve, reject) => { + gulp.src(dest + "packs/packs/**").pipe(gulp.dest(foundryDest + "packs/packs")); + resolve(); + }); +} + +async function sendTemplatesToFoundry() { + return new Promise ((resolve, reject) => { + gulp.src(dest + "templates/**").pipe(gulp.dest(foundryDest + "templates")); + resolve(); + }); +} + +async function sendRemainingToFoundry() { + return new Promise ((resolve, reject) => { + gulp.src(dest + "README.md").pipe(gulp.dest(foundryDest)); + gulp.src(dest + "fonts/**").pipe(gulp.dest(foundryDest + "fonts/Icons")); + gulp.src(dest + "packs/Icons/**").pipe(gulp.dest(foundryDest + "packs/Icons")); + gulp.src(dest + "ui/**").pipe(gulp.dest(foundryDest + "ui/Icons")); + resolve(); + }); +} + +const foundry = gulp.series(build, gulp.parallel(sendCSSToFoundry, sendSystemTemplateToFoundry, sendLangToFoundry, sendJSToFoundry, sendPacksToFoundry, sendTemplatesToFoundry, sendRemainingToFoundry)); /* ----------------------------------------- */ /* Watch Updates /* ----------------------------------------- */ function watchUpdates() { - gulp.watch(SW5E_LESS, css); - gulp.watch(SW5E_COPY, copy); + gulp.watch([src + "less/**/*.less"], gulp.series(css, sendCSSToFoundry)); + gulp.watch([src + "system.json", src + "template.json"], gulp.series(copySystemTemplate, sendSystemTemplateToFoundry)); + gulp.watch([src + "lang/**"], gulp.series(copyLang, sendLangToFoundry)); + gulp.watch([src + "sw5e.js", src + "module/**"], gulp.series(copyJS, sendJSToFoundry)); + gulp.watch([src + "packs/packs/**"], gulp.series(compilePacks, sendPacksToFoundry)); + gulp.watch([src + "templates/**"], gulp.series(copyTemplates, sendTemplatesToFoundry)); } /* ----------------------------------------- */ @@ -122,4 +195,4 @@ function watchUpdates() { exports.default = build; exports.foundry = foundry; -exports.watch = watchUpdates; +exports.watch = gulp.series(foundry, watchUpdates);