mirror of
https://github.com/Hypfer/Valetudo.git
synced 2025-10-26 11:27:27 +00:00
refactor: Bake-in specifically crafted build_metadata file instead of random other files
This commit is contained in:
parent
cf20143b75
commit
436fae6293
1
.gitignore
vendored
1
.gitignore
vendored
@ -14,6 +14,7 @@ build/
|
||||
.vscode/
|
||||
|
||||
/backend/lib/res/valetudo.openapi.schema.json
|
||||
/backend/lib/res/build_metadata.json
|
||||
|
||||
/docs/vendor
|
||||
/docs/_site
|
||||
|
||||
@ -9,6 +9,7 @@ const LinuxTools = require("./LinuxTools");
|
||||
const {sleep} = require("./misc");
|
||||
|
||||
let SYSTEM_ID;
|
||||
let BUILD_METADATA;
|
||||
|
||||
class Tools {
|
||||
static MK_DIR_PATH(filepath) {
|
||||
@ -41,38 +42,30 @@ class Tools {
|
||||
return Buffer.isBuffer(buf) && buf[0] === 0x1f && buf[1] === 0x8b;
|
||||
}
|
||||
|
||||
static GET_VALETUDO_VERSION() {
|
||||
let valetudoVersion = "unknown";
|
||||
|
||||
try {
|
||||
const rootDirectory = path.resolve(__dirname, "../../..");
|
||||
const packageContent = fs.readFileSync(rootDirectory + "/package.json", {"encoding": "utf-8"});
|
||||
|
||||
if (packageContent) {
|
||||
valetudoVersion = JSON.parse(packageContent.toString()).version;
|
||||
}
|
||||
} catch (e) {
|
||||
//intentional
|
||||
static READ_BUILD_METADATA() {
|
||||
if (BUILD_METADATA) {
|
||||
return BUILD_METADATA;
|
||||
}
|
||||
|
||||
return valetudoVersion;
|
||||
try {
|
||||
BUILD_METADATA = JSON.parse(fs.readFileSync(path.join(__dirname, "../res/build_metadata.json")).toString());
|
||||
} catch (e) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return BUILD_METADATA;
|
||||
}
|
||||
|
||||
static GET_VALETUDO_VERSION() {
|
||||
return Tools.READ_BUILD_METADATA()?.version ?? "unknown";
|
||||
}
|
||||
|
||||
static GET_COMMIT_ID() {
|
||||
let commitId = "unknown";
|
||||
return Tools.READ_BUILD_METADATA()?.commit ?? "unknown";
|
||||
}
|
||||
|
||||
try {
|
||||
const rootDirectory = path.resolve(__dirname, "../../..");
|
||||
commitId = fs.readFileSync(rootDirectory + "/.git/HEAD", {"encoding": "utf-8"}).trim();
|
||||
|
||||
if (commitId.match(/^ref: refs\/heads\/master$/) !== null) {
|
||||
commitId = fs.readFileSync(rootDirectory + "/.git/refs/heads/master", {"encoding": "utf-8"}).trim();
|
||||
}
|
||||
} catch (e) {
|
||||
//intentional
|
||||
}
|
||||
|
||||
return commitId;
|
||||
static GET_BUILD_TIMESTAMP() {
|
||||
return new Date(Tools.READ_BUILD_METADATA()?.buildTimestamp ?? 0);
|
||||
}
|
||||
|
||||
static GET_FREE_SYSTEM_MEMORY() {
|
||||
|
||||
@ -9,10 +9,8 @@
|
||||
},
|
||||
"pkg": {
|
||||
"assets": [
|
||||
"../.git/HEAD",
|
||||
"../.git/refs/heads/master",
|
||||
"../frontend/build",
|
||||
"../package.json",
|
||||
"../build_metadata.json",
|
||||
"../node_modules/swagger-ui-dist/swagger-ui.css",
|
||||
"./node_modules/swagger-ui-dist/swagger-ui.css"
|
||||
]
|
||||
@ -26,10 +24,11 @@
|
||||
"ts-check": "tsc --noEmit",
|
||||
"test": "mocha \"test/**/*_spec.js\"",
|
||||
"prepare_commit": "npm run lint_fix && npm run ts-check && npm run test",
|
||||
"pre_build": "node ../util/generate_build_metadata.js",
|
||||
"build": "npm run build_armv7 && npm run build_aarch64 && npm run build_armv7_lowmem",
|
||||
"build_armv7": "cross-env PKG_CACHE_PATH=../build_dependencies/pkg pkg --targets node20-linuxstatic-armv7 --compress Brotli --no-bytecode --public-packages \"*\" --options \"expose-gc,max-heap-size=42\" . --output ../build/armv7/valetudo",
|
||||
"build_aarch64": "cross-env PKG_CACHE_PATH=../build_dependencies/pkg pkg --targets node20-linuxstatic-arm64 --compress Brotli --no-bytecode --public-packages \"*\" --options \"expose-gc,max-heap-size=64\" . --output ../build/aarch64/valetudo",
|
||||
"build_armv7_lowmem": "cross-env PKG_CACHE_PATH=../build_dependencies/pkg pkg --targets node20-linuxstatic-armv7 --compress Brotli --no-bytecode --public-packages \"*\" --options \"expose-gc,max-heap-size=34,optimize-for-size,lite-mode,no-regexp-tier-up,no-expose-wasm\" . --output ../build/armv7/valetudo-lowmem"
|
||||
"build_armv7": "npm run pre_build && cross-env PKG_CACHE_PATH=../build_dependencies/pkg pkg --targets node20-linuxstatic-armv7 --compress Brotli --no-bytecode --public-packages \"*\" --options \"expose-gc,max-heap-size=42\" . --output ../build/armv7/valetudo",
|
||||
"build_aarch64": "npm run pre_build && cross-env PKG_CACHE_PATH=../build_dependencies/pkg pkg --targets node20-linuxstatic-arm64 --compress Brotli --no-bytecode --public-packages \"*\" --options \"expose-gc,max-heap-size=64\" . --output ../build/aarch64/valetudo",
|
||||
"build_armv7_lowmem": "npm run pre_build && cross-env PKG_CACHE_PATH=../build_dependencies/pkg pkg --targets node20-linuxstatic-armv7 --compress Brotli --no-bytecode --public-packages \"*\" --options \"expose-gc,max-heap-size=34,optimize-for-size,lite-mode,no-regexp-tier-up,no-expose-wasm\" . --output ../build/armv7/valetudo-lowmem"
|
||||
},
|
||||
"author": "",
|
||||
"dependencies": {
|
||||
|
||||
49
util/generate_build_metadata.js
Normal file
49
util/generate_build_metadata.js
Normal file
@ -0,0 +1,49 @@
|
||||
const fs = require('fs');
|
||||
const path = require("path");
|
||||
|
||||
|
||||
function GET_VALETUDO_VERSION() {
|
||||
let valetudoVersion = "unknown";
|
||||
|
||||
try {
|
||||
const rootDirectory = path.resolve(__dirname, "..");
|
||||
const packageContent = fs.readFileSync(rootDirectory + "/package.json", {"encoding": "utf-8"});
|
||||
|
||||
if (packageContent) {
|
||||
valetudoVersion = JSON.parse(packageContent.toString()).version;
|
||||
}
|
||||
} catch (e) {
|
||||
//intentional
|
||||
}
|
||||
|
||||
return valetudoVersion;
|
||||
}
|
||||
|
||||
function GET_COMMIT_ID() {
|
||||
let commitId = "unknown";
|
||||
|
||||
try {
|
||||
const rootDirectory = path.resolve(__dirname, "..");
|
||||
commitId = fs.readFileSync(rootDirectory + "/.git/HEAD", {"encoding": "utf-8"}).trim();
|
||||
|
||||
if (commitId.match(/^ref: refs\/heads\/master$/) !== null) {
|
||||
commitId = fs.readFileSync(rootDirectory + "/.git/refs/heads/master", {"encoding": "utf-8"}).trim();
|
||||
}
|
||||
} catch (e) {
|
||||
//intentional
|
||||
}
|
||||
|
||||
return commitId;
|
||||
}
|
||||
|
||||
|
||||
const metadata = {
|
||||
version: GET_VALETUDO_VERSION(),
|
||||
commit: GET_COMMIT_ID(),
|
||||
buildTimestamp: new Date().toISOString(),
|
||||
};
|
||||
|
||||
fs.writeFileSync(
|
||||
path.join(__dirname, "../backend/lib/res/build_metadata.json"),
|
||||
JSON.stringify(metadata)
|
||||
);
|
||||
Loading…
Reference in New Issue
Block a user