namespace ZB.MOM.WW.ScadaBridge.DelmiaNotifier;

/// <summary>
/// Maps an outcome to the legacy WWNotifier stdout contract: <c>YES</c> + exit 0 on success,
/// <c>NO</c> followed by a reason line + exit -1 on failure. The writer is injected so stdout is the
/// only thing Delmia ever parses (LF-terminated, deterministic across platforms).
/// </summary>
internal static class Reporter
{
    /// <summary>Writes the legacy WWNotifier stdout contract for the given outcome.</summary>
    /// <param name="ok">Whether the operation succeeded.</param>
    /// <param name="reason">The failure reason to write when <paramref name="ok"/> is <c>false</c>; ignored on success.</param>
    /// <param name="stdout">The writer to which the contract output is written.</param>
    /// <returns>0 on success; -1 on failure.</returns>
    public static int Report(bool ok, string reason, TextWriter stdout)
    {
        if (ok)
        {
            stdout.Write("YES\n");
            return 0;
        }

        stdout.Write("NO\n");
        stdout.Write(reason);
        return -1;
    }
}
