/** * Shared Proxmox-service resolution for the `celilo proxmox …` command tree * (node list, vm/ct list|show|resize). Resolves an explicit service-id arg, else * the sole Proxmox service; errors when ambiguous or unknown. */ import type { listContainerServices } from '../../services/container-service'; type Services = Awaited>; export function resolveProxmoxService( services: Services, requested: string | undefined, ): { service: Services[number] } | { error: string } { const proxmox = services.filter((s) => s.providerName === 'proxmox'); if (proxmox.length === 0) { return { error: 'No Proxmox container service configured. Add one: celilo service add proxmox', }; } if (requested) { const match = proxmox.find((s) => s.serviceId === requested); if (!match) { return { error: `No Proxmox service '${requested}'. Known: ${proxmox.map((s) => s.serviceId).join(', ')}`, }; } return { service: match }; } if (proxmox.length > 1) { return { error: `Multiple Proxmox services — specify one with :\n ${proxmox .map((s) => s.serviceId) .join('\n ')}`, }; } return { service: proxmox[0] }; }