forked from GitHub-Mirrors/foundry-sw5e
125 lines
3.4 KiB
JavaScript
125 lines
3.4 KiB
JavaScript
const gulp = require("gulp");
|
|
const less = require("gulp-less");
|
|
const through = require('through2');
|
|
const fs = require('fs');
|
|
|
|
/* ----------------------------------------- */
|
|
/* Constants
|
|
/* ----------------------------------------- */
|
|
|
|
const src = "./src/"
|
|
const dest = "./dist/"
|
|
|
|
const foundryDest = process.env.LOCALAPPDATA + "/FoundryVTT/Data/systems/sw5e";
|
|
|
|
/* ----------------------------------------- */
|
|
/* Compile LESS
|
|
/* ----------------------------------------- */
|
|
|
|
const SW5E_LESS = [src + "less/**/*.less"];
|
|
|
|
function compileLESS() {
|
|
return gulp.src(src + "less/original/sw5e.less")
|
|
.pipe(less())
|
|
.pipe(gulp.dest(dest));
|
|
}
|
|
|
|
function compileGlobalLess() {
|
|
return gulp.src(src + "less/update/sw5e-global.less")
|
|
.pipe(less())
|
|
.pipe(gulp.dest(dest));
|
|
}
|
|
|
|
function compileLightLess() {
|
|
return gulp.src(src + "less/update/sw5e-light.less")
|
|
.pipe(less())
|
|
.pipe(gulp.dest(dest));
|
|
}
|
|
|
|
function compileDarkLess() {
|
|
return gulp.src(src + "less/update/sw5e-dark.less")
|
|
.pipe(less())
|
|
.pipe(gulp.dest(dest));
|
|
}
|
|
|
|
const css = gulp.parallel(compileLESS, compileGlobalLess, compileLightLess, compileDarkLess);
|
|
|
|
/* ----------------------------------------- */
|
|
/* Compile packs
|
|
/* ----------------------------------------- */
|
|
|
|
const SW5E_PACKS = [src + "packs/packs/**"]
|
|
|
|
function jsonToDB() {
|
|
return through.obj(async (chunk, enc, cb) => {
|
|
let result = "";
|
|
|
|
const files = await fs.promises.readdir(chunk.path);
|
|
|
|
for( const file of files ) {
|
|
result += JSON.stringify(JSON.parse(fs.readFileSync(chunk.path + "/" + file, "utf-8"))) + "\n";
|
|
}
|
|
|
|
chunk.contents = new Buffer(result);
|
|
cb(null, chunk)
|
|
})
|
|
}
|
|
|
|
function compilePacks() {
|
|
return gulp.src(src + "packs/packs/*").pipe(jsonToDB()).pipe(gulp.dest(dest + "packs/packs"));
|
|
}
|
|
|
|
/* ----------------------------------------- */
|
|
/* 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));
|
|
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/"));
|
|
gulp.src(src + "lang/**").pipe(gulp.dest(dest + "lang/"));
|
|
gulp.src(src + "module/**").pipe(gulp.dest(dest + "module/"));
|
|
gulp.src(src + "packs/icons/**").pipe(gulp.dest(dest + "packs/Icons"));
|
|
gulp.src(src + "templates/**").pipe(gulp.dest(dest + "templates/"));
|
|
gulp.src(src + "ui/**").pipe(gulp.dest(dest + "ui/"));
|
|
resolve();
|
|
});
|
|
}
|
|
|
|
/* ----------------------------------------- */
|
|
/* build
|
|
/* ----------------------------------------- */
|
|
|
|
const build = gulp.parallel(css, compilePacks, copy)
|
|
|
|
/* ----------------------------------------- */
|
|
/* Send to foundry
|
|
/* ----------------------------------------- */
|
|
|
|
async function copyToFoundry() {
|
|
gulp.src(dest + "/**").pipe(gulp.dest(foundryDest));
|
|
}
|
|
|
|
const foundry = gulp.series(build, copyToFoundry);
|
|
|
|
/* ----------------------------------------- */
|
|
/* Watch Updates
|
|
/* ----------------------------------------- */
|
|
|
|
function watchUpdates() {
|
|
gulp.watch(SW5E_LESS, css);
|
|
gulp.watch(SW5E_COPY, copy);
|
|
}
|
|
|
|
/* ----------------------------------------- */
|
|
/* Export Tasks
|
|
/* ----------------------------------------- */
|
|
|
|
exports.default = build;
|
|
exports.foundry = foundry;
|
|
exports.watch = watchUpdates;
|