#!/usr/bin/node

const { ERROR, INFO, DEBUG } = require('DOUGAL_ROOT/debug')(__filename);

async function main () {
	// Check that we're running against the correct database version
	const version = require('./lib/version');
	INFO("Running version", await version.describe());
	version.compatible()
	.then( (versions) => {
		const api = require('./api');
		const ws = require('./ws');

		const { fork } = require('child_process');

		const port = process.env.HTTP_PORT || 3000;
		const host = process.env.HTTP_HOST || "127.0.0.1";
		const path = process.env.HTTP_PATH ?? "/api";
		const server = api.start(port, host, path);
		ws.start(server);

		const eventManagerPath = [__dirname, "events"].join("/");
		const eventManager = fork(eventManagerPath, /*{ stdio: 'ignore' }*/);

		INFO("Versions:", versions);

		process.on('exit', () => eventManager.kill());
	})
	.catch( ({current, wanted, component}) => {
		console.error(`Fatal error: incompatible ${component} version ${current} (wanted: ${wanted})`);
		ERROR(`Fatal error: incompatible ${component} version ${current} (wanted: ${wanted})`);
		process.exit(1);
	});
}

main();
