#!/usr/bin/env node import { spawn } from "child_process" import fs from "fs" import path from "path" import { fileURLToPath } from "url" const __dirname = path.dirname(fileURLToPath(import.meta.url)) const KERNEL = path.join(__dirname, "../kernel/kernel.js") const PID_FILE = "/tmp/forms.pid" const LOG_FILE = path.join(__dirname, "forms.log") // Define your log file const cmd = process.argv[2] // Function to append logs function logToFile(message) { fs.appendFileSync(LOG_FILE, `${new Date().toISOString()} - ${message}\n`) } if (cmd === "start") { if (fs.existsSync(PID_FILE)) { console.log("forms kernel already running") logToFile("forms kernel already running") process.exit(0) } const proc = spawn("node", [KERNEL], { detached: true, stdio: ["ignore", fs.openSync(LOG_FILE, "a"), fs.openSync(LOG_FILE, "a")] // Redirect stdout and stderr to the log file }) proc.unref() fs.writeFileSync(PID_FILE, String(proc.pid)) console.log("forms kernel started") logToFile("forms kernel started") } if (cmd === "stop") { if (!fs.existsSync(PID_FILE)) { console.log("forms kernel not running") logToFile("forms kernel not running") process.exit(0) } const pid = Number(fs.readFileSync(PID_FILE)) process.kill(pid) fs.unlinkSync(PID_FILE) console.log("forms kernel stopped") logToFile("forms kernel stopped") } if (!cmd) { console.log("usage: forms start | stop") logToFile("usage: forms start | stop") }