import { existsSync, readFileSync } from "node:fs";
import { secureAtomicWriteSync } from "../install/blocks/secureWrite.ts";
import { paths } from "./paths.ts";

export interface GlobalConfig {
  port?: number;
}

export function loadGlobalConfig(): GlobalConfig {
  const p = paths.config();
  if (!existsSync(p)) return {};
  try {
    const raw = readFileSync(p, "utf8");
    const parsed = JSON.parse(raw);
    return typeof parsed === "object" && parsed !== null ? (parsed as GlobalConfig) : {};
  } catch {
    return {};
  }
}

export function saveGlobalConfig(cfg: GlobalConfig): void {
  const p = paths.config();
  secureAtomicWriteSync(p, JSON.stringify(cfg, null, 2));
}

export function setGlobalConfigPort(port: number): void {
  const cfg = loadGlobalConfig();
  cfg.port = port;
  saveGlobalConfig(cfg);
}
