public void Clean(ICleanParameters parameters)
{
if (parameters.KeepReferences)
{
var persistentReferenceBuilders = builderEnumerator.GetAllPersistentBuilders().ToList();
var persistentBuilderPrefixes = persistentReferenceBuilders.Select(b => b.FullName + "_").ToList();
foreach (var directory in cacheDir.Value.ChildDirectories)
{
foreach (var prefix in persistentBuilderPrefixes)
{
if (!directory.StartsWith(prefix))
{
DeleteDirectory(cacheDir.Value.GetChildDirectory(directory), parameters);
break;
}
else
{
log.InfoFormat("Keeping {0} because keep-references option is active", directory);
}
}
}
if (!cacheDir.Value.ChildDirectories.Any())
DeleteDirectory(cacheDir.Value, parameters);
}
else
{
DeleteDirectory(cacheDir.Value, parameters);
}
}