diff --git a/scripts/build-linux-bundle.mjs b/scripts/build-linux-bundle.mjs index 67aeefa..fa64e56 100644 --- a/scripts/build-linux-bundle.mjs +++ b/scripts/build-linux-bundle.mjs @@ -1,8 +1,20 @@ +import { readFileSync } from 'node:fs' import * as esbuild from 'esbuild' import { fileURLToPath } from 'node:url' import path from 'node:path' const rootDir = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..') +const packageJson = JSON.parse( + readFileSync(path.join(rootDir, 'package.json'), 'utf8') +) + +let buildNumber = process.env.BUILD_NUMBER || process.env.VITE_BUILD_NUMBER || 'dev' +try { + const buildInfo = JSON.parse( + readFileSync(path.join(rootDir, 'src/buildInfo.json'), 'utf8') + ) + buildNumber = buildInfo.buildNumber ?? buildNumber +} catch {} await esbuild.build({ entryPoints: [path.join(rootDir, 'src/headless.js')], @@ -21,7 +33,9 @@ await esbuild.build({ ], inject: [path.join(rootDir, 'scripts/import-meta-url.js')], define: { - 'import.meta.url': 'import_meta_url' + 'import.meta.url': 'import_meta_url', + 'process.env.FC_PACKAGE_VERSION': JSON.stringify(packageJson.version), + 'process.env.FC_BUILD_NUMBER': JSON.stringify(buildNumber) }, logLevel: 'info' }) diff --git a/src/headless.js b/src/headless.js index dc744bb..fd2d96e 100644 --- a/src/headless.js +++ b/src/headless.js @@ -1,6 +1,9 @@ -import { init } from "./index.js"; +process.env.FC_HEADLESS_ENTRY = "1"; -init({ headless: true }).catch((err) => { - console.error(err.message); - process.exit(1); -}); +import("./index.js") + .then(({ init }) => + init({ headless: true }).catch((err) => { + console.error(err.message); + process.exit(1); + }), + ); diff --git a/src/index.js b/src/index.js index 2867e5b..ce4fa40 100644 --- a/src/index.js +++ b/src/index.js @@ -95,9 +95,18 @@ export async function init(options = {}) { } if (isInfo) { + const buildNumber = + runningServer.buildNumber ?? runningServer.build ?? "n/a"; + logger.info("-----FarmControl Server-----"); - logger.info("Version:", "v" + runningServer.version || "n/a"); - logger.info("Build:", runningServer.build || "n/a"); + logger.info( + "Version:", + runningServer.version ? `v${runningServer.version}` : "n/a", + ); + logger.info( + "Build:", + buildNumber === "dev" ? "dev" : `b${buildNumber}`, + ); logger.info( "Authenticated:", runningServer.authenticated == true ? "Yes" : "No", @@ -167,7 +176,7 @@ const isMainModule = process.argv[1] && fileURLToPath(import.meta.url) === path.resolve(process.argv[1]); -if (isMainModule) { +if (isMainModule && !process.env.FC_HEADLESS_ENTRY) { init().catch((err) => { logger.error(err.message); process.exit(1); diff --git a/src/localserver/localserver.js b/src/localserver/localserver.js index 16a217d..062dd5f 100644 --- a/src/localserver/localserver.js +++ b/src/localserver/localserver.js @@ -1,29 +1,8 @@ -import { readFileSync } from "node:fs"; import express from "express"; import log4js from "log4js"; import { notPrompting } from "../utils.js"; import { loadConfig } from "../config.js"; - -const readJsonFile = (fileUrl) => { - try { - return JSON.parse(readFileSync(fileUrl, "utf8")); - } catch { - return {}; - } -}; - -const packageJsonUrl = new URL("../../package.json", import.meta.url); -const buildInfoUrl = new URL("../buildInfo.json", import.meta.url); - -const getServerVersionInfo = () => { - const packageJson = readJsonFile(packageJsonUrl); - const buildInfo = readJsonFile(buildInfoUrl); - - return { - version: packageJson.version ?? "dev", - buildNumber: buildInfo.buildNumber ?? "dev", - }; -}; +import { getServerVersionInfo } from "../serverVersion.js"; export const LOCAL_SERVER_PORT = 47291; diff --git a/src/serverVersion.js b/src/serverVersion.js new file mode 100644 index 0000000..0dcc629 --- /dev/null +++ b/src/serverVersion.js @@ -0,0 +1,29 @@ +import { readFileSync } from "node:fs"; + +const readJsonFile = (fileUrl) => { + try { + return JSON.parse(readFileSync(fileUrl, "utf8")); + } catch { + return {}; + } +}; + +const packageJsonUrl = new URL("../package.json", import.meta.url); +const buildInfoUrl = new URL("./buildInfo.json", import.meta.url); + +export const getServerVersionInfo = () => { + if (process.env.FC_PACKAGE_VERSION && process.env.FC_BUILD_NUMBER) { + return { + version: process.env.FC_PACKAGE_VERSION, + buildNumber: process.env.FC_BUILD_NUMBER, + }; + } + + const packageJson = readJsonFile(packageJsonUrl); + const buildInfo = readJsonFile(buildInfoUrl); + + return { + version: packageJson.version ?? "dev", + buildNumber: buildInfo.buildNumber ?? "dev", + }; +};