import { writeFileSync, readFileSync, existsSync, unlinkSync, mkdirSync } from "node:fs";
import { dirname } from "node:path";

export function writePid(pidFile: string, pid: number): void {
  mkdirSync(dirname(pidFile), { recursive: true });
  writeFileSync(pidFile, String(pid));
}

export function readPid(pidFile: string): number | null {
  if (!existsSync(pidFile)) return null;
  const raw = readFileSync(pidFile, "utf8").trim();
  const n = Number(raw);
  return Number.isFinite(n) ? n : null;
}

export function isAlive(pidFile: string): boolean {
  const pid = readPid(pidFile);
  if (pid === null) return false;
  try {
    process.kill(pid, 0);
    return true;
  } catch {
    return false;
  }
}

export function removePid(pidFile: string): void {
  if (existsSync(pidFile)) unlinkSync(pidFile);
}
