in JetBrains.SbomUtils/src/JetBrains.SbomUtils.Console/Program.cs [97:132]
private static Task<int> AnalyzeBatch(string sbom, string jsonConfig, bool verbose)
{
using ILoggerFactory factory = LoggerFactory.Create(builder => builder.AddFilter(level => level >= LogLevel.Information || verbose).AddConsole());
var logger = factory.CreateLogger<SbomValidator>();
if (!File.Exists(jsonConfig))
{
logger.LogError("Provided path {path} to the json configuration file doesn't exist", jsonConfig);
return Task.FromResult((int)ExitCodes.ArgumentsError);
}
BatchVerificationParams? verificationParams = null;
try
{
using (StreamReader file = System.IO.File.OpenText(jsonConfig))
{
JsonSerializer serializer = new JsonSerializer();
verificationParams = serializer.Deserialize<BatchVerificationParams>(new JsonTextReader(file));
}
if (verificationParams == null)
{
logger.LogError("Failed to parse SBOM");
return Task.FromResult((int)ExitCodes.ArgumentsError);
}
}
catch (Exception e)
{
throw new SbomValidationException($"Failed to parse SBOM: {e.Message}", e);
}
var analyzer = new Analyzer(logger);
return Task.FromResult(analyzer.Analyze(sbom, verificationParams));
}