ESP3D/embedded/config/buildheader.js
2024-05-30 09:40:28 +08:00

77 lines
2.2 KiB
JavaScript

let path = require("path");
const fs = require("fs");
const child_process = require("child_process");
const chalk = require("chalk");
let distPath = path.normalize(__dirname + "/../dist/");
let srcPath = path.normalize(__dirname + "/../src/");
let headerPath = path.normalize(
__dirname + "/../../esp3d/src/modules/http/embedded.h"
);
console.log(chalk.yellow("Converting bin to text file"));
//Cleaning files
if (fs.existsSync(distPath + "out.tmp")) fs.rmSync(distPath + "out.tmp");
if (fs.existsSync(distPath + "embedded.h")) fs.rmSync(distPath + "embedded.h");
const data = new Uint8Array(
fs.readFileSync(distPath + "index.html.gz", { flag: "r" })
);
console.log("data size is ", data.length);
let out = "#define tool_html_gz_size " + data.length + "\n";
out += "const unsigned char tool_html_gz[" + data.length + "] PROGMEM = {\n ";
let nb = 0;
data.forEach((byte, index) => {
out +=
" 0x" + (byte.toString(16).length == 1 ? "0" : "") + byte.toString(16);
if (index < data.length - 1) out += ",";
if (nb == 15) {
out += "\n ";
nb = 0;
} else {
nb++;
}
});
out += "\n};\n";
fs.writeFileSync(distPath + "out.tmp", out);
//Check conversion
if (fs.existsSync(distPath + "out.tmp")) {
console.log(chalk.green("[ok]"));
} else {
console.log(chalk.red("[error]Conversion failed"));
return;
}
//Format header file
console.log(chalk.yellow("Building header"));
fs.writeFileSync(
distPath + "embedded.h",
fs.readFileSync(srcPath + "header.txt")
);
let bin2cfile = fs.readFileSync(distPath + "out.tmp").toString();
fs.appendFileSync(distPath + "embedded.h", bin2cfile);
fs.appendFileSync(
distPath + "embedded.h",
fs.readFileSync(srcPath + "footer.txt")
);
//Check format result
if (fs.existsSync(distPath + "embedded.h")) {
console.log(chalk.green("[ok]"));
} else {
console.log(chalk.red("[error]Conversion failed"));
return;
}
//Move file to src
console.log(chalk.yellow("Overwriting header in sources"));
fs.writeFileSync(headerPath, fs.readFileSync(distPath + "embedded.h"));
if (fs.existsSync(headerPath)) {
console.log(chalk.green("[ok]"));
} else {
console.log(chalk.red("[error]Overwriting failed"));
return;
}