public static Implementation Build([NotNull] RetrievalMethod retrievalMethod, [NotNull] ITaskHandler handler, [CanBeNull] IStore keepDownloads = null)
{
#region Sanity checks
if (retrievalMethod == null) throw new ArgumentNullException(nameof(retrievalMethod));
if (handler == null) throw new ArgumentNullException(nameof(handler));
#endregion
var implementationDir = retrievalMethod.DownloadAndApply(handler);
try
{
var digest = GenerateDigest(implementationDir, handler, keepDownloads);
return new Implementation {ID = @"sha1new=" + digest.Sha1New, ManifestDigest = digest, RetrievalMethods = {retrievalMethod}};
}
finally
{
implementationDir.Dispose();
}
}
#endregion