using System; namespace NixWslWrapper.Core.Domain { public class ExecutionResult { public int ExitCode { get; } public bool IsSuccess => ExitCode == 0; public string? ErrorMessage { get; } public ExecutionResult(int exitCode, string? errorMessage = null) { ExitCode = exitCode; ErrorMessage = errorMessage; } public static ExecutionResult Success() => new ExecutionResult(0); public static ExecutionResult Failure(int exitCode, string errorMessage) => new ExecutionResult(exitCode, errorMessage); public override bool Equals(object? obj) { if (obj is not ExecutionResult other) return false; return ExitCode == other.ExitCode && string.Equals(ErrorMessage, other.ErrorMessage, StringComparison.Ordinal); } public override int GetHashCode() { return HashCode.Combine(ExitCode, ErrorMessage); } public override string ToString() { return IsSuccess ? "Success" : $"Failed with Exit Code {ExitCode}. Error: {ErrorMessage}"; } } }