forked from atm09st/foundryvtt-whitehack-4e
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgulpfile.js
124 lines (107 loc) · 3.47 KB
/
gulpfile.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
// Less configuration
const gulp = require('gulp');
const less = require('gulp-less');
const through2 = require("through2");
const yaml = require("js-yaml");
const Datastore = require("nedb");
const cb = require("cb");
const mergeStream = require("merge-stream");
const clean = require("gulp-clean");
const zip = require("gulp-zip");
const fs = require("fs");
const path = require("path");
const SYSTEM = JSON.parse(fs.readFileSync("src/system.json"));
const STATIC_FILES = [
"src/system.json",
"src/template.json",
"src/wh3e.js",
"src/assets/**/*",
"src/lang/**/*",
"src/module/**/*",
"src/templates/**/*"
];
const LESS_SRC = "src/less/wh3e.less";
const PACK_SRC = "src/packs";
const BUILD_DIR = "build";
const DIST_DIR = "dist";
const CSS_DEST = path.join(BUILD_DIR, "css");
/* ----------------------------------------- */
/* Compile Compendia
/* ----------------------------------------- */
compilePacks = () => {
// determine the source folders to process
const folders = fs.readdirSync(PACK_SRC).filter((file) => {
return fs.statSync(path.join(PACK_SRC, file)).isDirectory();
});
// process each folder into a compendium db
const packs = folders.map((folder) => {
const db = new Datastore({ filename: path.resolve(__dirname, BUILD_DIR, "packs", `${folder}.db`), autoload: true });
return gulp.src(path.join(PACK_SRC, folder, "/**/*.yaml")).pipe(
through2.obj((file, enc, cb) => {
let json = yaml.loadAll(file.contents.toString());
db.insert(json);
cb(null, file);
})
);
});
return mergeStream.call(null, packs);
}
/* ----------------------------------------- */
/* Compile LESS files to CSS
/* ----------------------------------------- */
compileCSS = () => {
return gulp
.src(LESS_SRC)
.pipe(less())
.pipe(
gulp.dest(CSS_DEST)
);
}
/* ----------------------------------------- */
/* Copy static files
/* ----------------------------------------- */
copyFiles = () => {
return gulp
.src(STATIC_FILES, {
base: "src",
})
.pipe(gulp.dest(BUILD_DIR));
}
/* ----------------------------------------- */
/* Copy Docs files for github pages
/* ----------------------------------------- */
copyDocFiles = () => {
return gulp
.src("src/assets/fonts/**/*", {
base: "src/assets/fonts",
})
.pipe(gulp.dest("docs/assets/fonts"));
}
/* ----------------------------------------- */
/* Create distribution archive
/* ----------------------------------------- */
createZip = () => {
return gulp
.src(`${BUILD_DIR}/**/*`)
.pipe(zip(`foundryvtt-${SYSTEM.name}-v${SYSTEM.version}.zip`))
.pipe(gulp.dest(DIST_DIR));
}
/* ----------------------------------------- */
/* Other Functions
/* ----------------------------------------- */
cleanBuild = () => {
return gulp.src(`${BUILD_DIR}`, { allowEmpty: true }, { read: false }).pipe(clean());
}
watchUpdates = () => {
gulp.watch("src/**/*", gulp.series(cleanBuild, compileCSS, copyFiles, copyDocFiles, compilePacks));
}
/* ----------------------------------------- */
/* Export Tasks
/* ----------------------------------------- */
exports.clean = gulp.series(cleanBuild);
exports.compile = gulp.series(compilePacks);
exports.compileCSS = gulp.series(compileCSS);
exports.copy = gulp.series(copyFiles);
exports.build = gulp.series(cleanBuild, compileCSS, copyFiles, copyDocFiles, compilePacks);
exports.dist = gulp.series(createZip);
exports.default = gulp.series(cleanBuild, compileCSS, copyFiles, copyDocFiles, compilePacks, watchUpdates);