using System; namespace StellaOps.Scanner.Analyzers.Lang.Go.Internal; internal sealed class GoModule { public GoModule(string path, string? version, string? sum, bool isMain) { Path = path ?? throw new ArgumentNullException(nameof(path)); Version = Normalize(version); Sum = Normalize(sum); IsMain = isMain; } public string Path { get; } public string? Version { get; } public string? Sum { get; } public GoModuleReplacement? Replacement { get; private set; } public bool IsMain { get; } public void SetReplacement(GoModuleReplacement replacement) { Replacement = replacement ?? throw new ArgumentNullException(nameof(replacement)); } private static string? Normalize(string? value) { if (string.IsNullOrWhiteSpace(value)) { return null; } var trimmed = value.Trim(); return trimmed.Length == 0 ? null : trimmed; } } internal sealed class GoModuleReplacement { public GoModuleReplacement(string path, string? version, string? sum) { Path = path ?? throw new ArgumentNullException(nameof(path)); Version = Normalize(version); Sum = Normalize(sum); } public string Path { get; } public string? Version { get; } public string? Sum { get; } private static string? Normalize(string? value) { if (string.IsNullOrWhiteSpace(value)) { return null; } var trimmed = value.Trim(); return trimmed.Length == 0 ? null : trimmed; } }