public IEnumerable<IPackageInfo> FindAllPackages()
{
var result = new List<IPackageInfo>();
_diagnostics.LogExecutionOnEach(_packageLoaders, (currentLoader, log) => {
IPackageInfo[] packageInfos = currentLoader.Load(log).ToArray();
_diagnostics.LogPackages(currentLoader, packageInfos);
packageInfos.Each(pak => {
if (result.Any(x => x.Name == pak.Name))
{
_diagnostics.LogFor(pak)
.Trace("Bottle named {0} already found by a previous loader. Ignoring.", pak.Name);
}
else
{
result.Add(pak);
}
});
});
return result;
}