const DEBUG_DAEMON_OUTPUT = false;
import daemonizeProcess from "daemonize-process";
import { init as initBugCounter } from "./bug-counter";
import { init as initClient, initDEBUG } from "./client";
import initInfoJson from "./info-json";
import initKucalc from "./init-kucalc";
import { getOptions } from "./init-program";
import { cleanup as cleanupEnvironmentVariables } from "./project-setup";
import initPublicPaths from "./public-paths";
import initServers from "./servers/init";
import { getLogger } from "./logger";
const logger = getLogger("project-main");
function checkEnvVariables() {
const { HOME } = process.env;
if (HOME == null) {
throw Error("HOME env var must be set");
}
process.chdir(HOME);
if (process.env.DATA == null) {
throw Error("DATA env var must be set");
}
process.env.SMC = process.env.DATA;
}
export async function main() {
const options = getOptions();
if (options.daemon) {
logger.info(`daemonize the process pid=${process.pid}`);
if (DEBUG_DAEMON_OUTPUT) {
daemonizeProcess({ stdio: ["inherit", "inherit", "inherit"] });
} else {
daemonizeProcess();
}
}
initBugCounter();
checkEnvVariables();
cleanupEnvironmentVariables();
initKucalc();
logger.info("main init function");
logger.info("initialize INFO.json file");
await initInfoJson();
logger.info("create Client interface");
initClient();
logger.info("create all the servers...");
await initServers();
logger.info("create public paths watcher...");
initPublicPaths();
initDEBUG();
}