public bool CanProcessorIncremental(IDocumentProcessor processor)
{
if (!CanVersionIncremental)
{
return false;
}
var cpi = CurrentBuildVersionInfo.Processors.Find(p => p.Name == processor.Name);
if (cpi == null)
{
Logger.LogWarning($"Current BuildVersionInfo missed processor info for {processor.Name}.");
return false;
}
var lpi = LastBuildVersionInfo.Processors.Find(p => p.Name == processor.Name);
if (lpi == null)
{
Logger.LogVerbose($"Processor {processor.Name} disable incremental build because last build doesn't contain version {Version}.");
return false;
}
if (cpi.IncrementalContextHash != lpi.IncrementalContextHash)
{
Logger.LogVerbose($"Processor {processor.Name} disable incremental build because incremental context hash changed.");
return false;
}
if (cpi.Steps.Count != lpi.Steps.Count)
{
Logger.LogVerbose($"Processor {processor.Name} disable incremental build because steps count is different.");
return false;
}
for (int i = 0; i < cpi.Steps.Count; i++)
{
if (!object.Equals(cpi.Steps[i], lpi.Steps[i]))
{
Logger.LogVerbose($"Processor {processor.Name} disable incremental build because steps changed, from step {lpi.Steps[i].ToJsonString()} to {cpi.Steps[i].ToJsonString()}.");
return false;
}
}
Logger.LogVerbose($"Processor {processor.Name} enable incremental build.");
return true;
}