dsql-admin/dsql-app/utils/grabDist.js
2024-11-05 12:12:42 +01:00

66 lines
1.8 KiB
JavaScript

// @ts-check
const fs = require("fs");
const isLocal = process.env.NEXT_PUBLIC_DSQL_LOCAL || null;
const production = process.env.NODE_ENV == "production";
const isBuilding = process.env.BUILDING_APP;
/**
* # Grab the current distribution directory
* @description This returns the relative path from the CWD. Eg `./.dist/build-1`
* @returns {string | undefined}
*/
function grabDist() {
if (isLocal) {
return ".local_dist";
}
if (isBuilding) {
if (!fs.existsSync("./.dist")) fs.mkdirSync("./.dist");
if (!fs.existsSync("./.dist/BUILD")) {
fs.writeFileSync("./.dist/BUILD", "0", "utf-8");
}
const distDir = (() => {
if (isLocal) return ".local_dist";
try {
const buildNumber = fs.readFileSync("./.dist/BUILD", "utf-8");
const newBuildNumber = Number(buildNumber) + 1;
if (newBuildNumber < 0) {
throw new Error("Invalid Build Number");
}
fs.writeFileSync("./.dist/BUILD", String(newBuildNumber));
return `.dist/build-${newBuildNumber}`;
} catch (/** @type {*} */ error) {
console.log("Build Number Generation Error =>", error.message);
process.exit();
}
})();
return distDir;
}
if (production) {
const distDir = (() => {
if (isLocal) return ".local_dist";
try {
const buildNumber = fs.readFileSync("./.dist/BUILD", "utf-8");
return `.dist/build-${buildNumber}`;
} catch (/** @type {*} */ error) {
console.log("Build Number Parse Error =>", error.message);
process.exit();
}
})();
return distDir;
}
return undefined;
}
module.exports = grabDist;