summaryrefslogtreecommitdiffstats
path: root/html/gulpfile.js
diff options
context:
space:
mode:
Diffstat (limited to 'html/gulpfile.js')
-rw-r--r--html/gulpfile.js62
1 files changed, 62 insertions, 0 deletions
diff --git a/html/gulpfile.js b/html/gulpfile.js
new file mode 100644
index 0000000..48237c9
--- /dev/null
+++ b/html/gulpfile.js
@@ -0,0 +1,62 @@
+const { src, dest, task, series } = require("gulp");
+const clean = require('gulp-clean');
+const gzip = require('gulp-gzip');
+const inlineSource = require('gulp-inline-source');
+const rename = require("gulp-rename");
+const through2 = require('through2');
+
+const genHeader = (size, buf, len) => {
+ let idx = 0;
+ let data = "unsigned char index_html[] = {\n ";
+
+ for (const value of buf) {
+ idx++;
+
+ let current = value < 0 ? value + 256 : value;
+
+ data += "0x";
+ data += (current >>> 4).toString(16);
+ data += (current & 0xF).toString(16);
+
+ if (idx === len) {
+ data += "\n";
+ } else {
+ data += idx % 12 === 0 ? ",\n " : ", ";
+ }
+ }
+
+ data += "};\n";
+ data += `unsigned int index_html_len = ${len};\n`;
+ data += `unsigned int index_html_size = ${size};\n`;
+ return data;
+};
+let fileSize = 0;
+
+task('clean', () => {
+ return src('dist', { read: false, allowEmpty: true })
+ .pipe(clean());
+});
+
+task('inline', () => {
+ return src('dist/index.html')
+ .pipe(inlineSource())
+ .pipe(rename("inline.html"))
+ .pipe(dest('dist/'));
+});
+
+task('default', series('inline', () => {
+ return src('dist/inline.html')
+ .pipe(through2.obj((file, enc, cb) => {
+ fileSize = file.contents.length;
+ return cb(null, file);
+ }))
+ .pipe(gzip())
+ .pipe(through2.obj((file, enc, cb) => {
+ const buf = file.contents;
+ file.contents = Buffer.from(genHeader(fileSize, buf, buf.length));
+ return cb(null, file);
+ }))
+ .pipe(rename("html.h"))
+ .pipe(dest('../src/'));
+}));
+