// Verifica disponibilità di binari di sistema invocati via child_process.
// Cache in-memory per processo: i binari non vengono installati/disinstallati durante un run.

import { spawn } from 'node:child_process';

const cache = new Map<string, boolean>();

export async function checkSystemBin(name: string, versionArg = '-version'): Promise<boolean> {
  const hit = cache.get(name);
  if (hit !== undefined) return hit;
  const ok = await new Promise<boolean>(resolve => {
    const p = spawn(name, [versionArg]);
    p.on('error', () => resolve(false));
    p.on('exit', code => resolve(code === 0));
  });
  if (!ok) console.warn(`[system-bins] '${name}' non trovato su PATH`);
  cache.set(name, ok);
  return ok;
}
