Files
EMS-ESP32/tools/webfilesbuilder/gulpfile.js
2019-08-02 09:26:13 +02:00

232 lines
7.4 KiB
JavaScript

var gulp = require('gulp');
var fs = require('fs');
var concat = require('gulp-concat');
var gzip = require('gulp-gzip');
var flatmap = require('gulp-flatmap');
var path = require('path');
var htmlmin = require('gulp-htmlmin');
var uglify = require('gulp-uglify');
var pump = require('pump');
gulp.task('myespjs-concat', function () {
return gulp.src(['../../src/websrc/myesp.js', '../../src/custom.js'])
.pipe(concat({
path: 'myesp.js',
stat: {
mode: 0666
}
}))
.pipe(gulp.dest('../../src/websrc/temp/js'))
});
gulp.task('myespjsminify', ["myespjs-concat"], function (cb) {
pump([
gulp.src('../../src/websrc/temp/js/myesp.js'),
uglify(),
gulp.dest('../../src/websrc/temp/js/ugly'),
],
cb
);
});
gulp.task("myespjsgz", ["myespjsminify"], function () {
return gulp.src("../../src/websrc/temp/js/ugly/myesp.js")
.pipe(gzip({
append: true
}))
.pipe(gulp.dest('../../src/websrc/temp/gzipped/js'));
});
gulp.task('myespjsgzh', ["myespjsgz"], function () {
var source = "../../src/websrc/temp/gzipped/js/" + "myesp.js.gz";
var destination = "../../src/webh/" + "myesp.js.gz.h";
var wstream = fs.createWriteStream(destination);
wstream.on('error', function (err) {
console.log(err);
});
var data = fs.readFileSync(source);
wstream.write('#define myesp_js_gz_len ' + data.length + '\n');
wstream.write('const uint8_t myesp_js_gz[] PROGMEM = {')
for (i = 0; i < data.length; i++) {
if (i % 1000 == 0) wstream.write("\n");
wstream.write('0x' + ('00' + data[i].toString(16)).slice(-2));
if (i < data.length - 1) wstream.write(',');
}
wstream.write('\n};')
wstream.end();
});
gulp.task("scripts", ["scripts-concat"], function () {
var source = "../../src/websrc/temp/gzipped/js/" + "required.js.gz";
var destination = "../../src/webh/" + "required.js.gz.h";
var wstream = fs.createWriteStream(destination);
wstream.on('error', function (err) {
console.log(err);
});
var data = fs.readFileSync(source);
wstream.write('#define required_js_gz_len ' + data.length + '\n');
wstream.write('const uint8_t required_js_gz[] PROGMEM = {')
for (i = 0; i < data.length; i++) {
if (i % 1000 == 0) wstream.write("\n");
wstream.write('0x' + ('00' + data[i].toString(16)).slice(-2));
if (i < data.length - 1) wstream.write(',');
}
wstream.write('\n};')
wstream.end();
});
gulp.task('scripts-concat', ["myespjsgzh"], function () {
return gulp.src(['../../src/websrc/3rdparty/js/jquery-1.12.4.min.js', '../../src/websrc/3rdparty/js/bootstrap-3.3.7.min.js', '../../src/websrc/3rdparty/js/footable-3.1.6.min.js'])
.pipe(concat({
path: 'required.js',
stat: {
mode: 0666
}
}))
.pipe(gulp.dest('../../src/websrc/temp/js/'))
.pipe(gzip({
append: true
}))
.pipe(gulp.dest('../../src/websrc/temp/gzipped/js/'));
});
gulp.task('styles-concat', function () {
return gulp.src(['../../src/websrc/3rdparty/css/bootstrap-3.3.7.min.css', '../../src/websrc/3rdparty/css/footable.bootstrap-3.1.6.min.css', '../../src/websrc/3rdparty/css/sidebar.css'])
.pipe(concat({
path: 'required.css',
stat: {
mode: 0666
}
}))
.pipe(gulp.dest('../../src/websrc/temp/css/'))
.pipe(gzip({
append: true
}))
.pipe(gulp.dest('../../src/websrc/temp/gzipped/css/'));
});
gulp.task("styles", ["styles-concat"], function () {
var source = "../../src/websrc/temp/gzipped/css/" + "required.css.gz";
var destination = "../../src/webh/" + "required.css.gz.h";
var wstream = fs.createWriteStream(destination);
wstream.on('error', function (err) {
console.log(err);
});
var data = fs.readFileSync(source);
wstream.write('#define required_css_gz_len ' + data.length + '\n');
wstream.write('const uint8_t required_css_gz[] PROGMEM = {')
for (i = 0; i < data.length; i++) {
if (i % 1000 == 0) wstream.write("\n");
wstream.write('0x' + ('00' + data[i].toString(16)).slice(-2));
if (i < data.length - 1) wstream.write(',');
}
wstream.write('\n};')
wstream.end();
});
gulp.task("fontgz", function () {
return gulp.src("../../src/websrc/3rdparty/fonts/*.*")
.pipe(gulp.dest("../../src/websrc/temp/fonts/"))
.pipe(gzip({
append: true
}))
.pipe(gulp.dest('../../src/websrc/temp/gzipped/fonts/'));
});
gulp.task("fonts", ["fontgz"], function () {
return gulp.src("../../src/websrc/temp/gzipped/fonts/*.*")
.pipe(flatmap(function (stream, file) {
var filename = path.basename(file.path);
var wstream = fs.createWriteStream("../../src/webh/" + filename + ".h");
wstream.on("error", function (err) {
gutil.log(err);
});
var data = file.contents;
wstream.write("#define " + filename.replace(/\.|-/g, "_") + "_len " + data.length + "\n");
wstream.write("const uint8_t " + filename.replace(/\.|-/g, "_") + "[] PROGMEM = {")
for (i = 0; i < data.length; i++) {
if (i % 1000 == 0) wstream.write("\n");
wstream.write('0x' + ('00' + data[i].toString(16)).slice(-2));
if (i < data.length - 1) wstream.write(',');
}
wstream.write("\n};")
wstream.end();
return stream;
}));
});
gulp.task('html-concat', function () {
return gulp.src(['../../src/websrc/myesp.htm', '../../src/custom.htm'])
.pipe(concat({
path: 'myesp.html',
stat: {
mode: 0666
}
}))
.pipe(htmlmin({ collapseWhitespace: true, minifyJS: true }))
.pipe(gulp.dest('../../src/websrc/temp/'))
.pipe(gzip({
append: true
}))
.pipe(gulp.dest('../../src/websrc/temp/gzipped/'));
});
gulp.task('htmlsprep', ["html-concat"], function () {
return gulp.src('../../src/websrc/index.html')
.pipe(htmlmin({ collapseWhitespace: true, minifyJS: true }))
.pipe(gulp.dest('../../src/websrc/temp/'))
.pipe(gzip({
append: true
}))
.pipe(gulp.dest('../../src/websrc/temp/gzipped/'));
});
gulp.task("htmls", ["htmlsprep"], function () {
return gulp.src("../../src/websrc/temp/gzipped/*.gz")
.pipe(flatmap(function (stream, file) {
var filename = path.basename(file.path);
var wstream = fs.createWriteStream("../../src/webh/" + filename + ".h");
wstream.on("error", function (err) {
gutil.log(err);
});
var data = file.contents;
wstream.write("#define " + filename.replace(/\.|-/g, "_") + "_len " + data.length + "\n");
wstream.write("const uint8_t " + filename.replace(/\.|-/g, "_") + "[] PROGMEM = {")
for (i = 0; i < data.length; i++) {
if (i % 1000 == 0) wstream.write("\n");
wstream.write('0x' + ('00' + data[i].toString(16)).slice(-2));
if (i < data.length - 1) wstream.write(',');
}
wstream.write("\n};")
wstream.end();
return stream;
}));
});
gulp.task('default', ['scripts', 'styles', "fonts", "htmls"]);