private static Dictionary<string, FileAttributeItem> ComputeFileAttributes(DocumentBuildParameters parameters, DependencyGraph dg)
{
var filesInScope = from f in parameters.Files.EnumerateFiles()
let fileKey = ((RelativePath)f.File).GetPathFromWorkingFolder().ToString()
select new
{
PathFromWorkingFolder = fileKey,
FullPath = f.FullPath
};
var files = filesInScope;
if (dg != null)
{
var filesFromDependency = from node in dg.GetAllDependentNodes()
let fullPath = Path.Combine(EnvironmentContext.BaseDirectory, ((RelativePath)node).RemoveWorkingFolder())
select new
{
PathFromWorkingFolder = node,
FullPath = fullPath
};
files = files.Concat(filesFromDependency);
}
return (from item in files
where File.Exists(item.FullPath)
group item by item.PathFromWorkingFolder into g
select new FileAttributeItem
{
File = g.Key,
LastModifiedTime = File.GetLastWriteTimeUtc(g.First().FullPath),
MD5 = StringExtension.GetMd5String(File.ReadAllText(g.First().FullPath)),
}).ToDictionary(a => a.File);
}