private GenerateDigest ( [ path, [ handler, [ keepDownloads = null ) : ManifestDigest | ||
path | [ | |
handler | [ | |
keepDownloads | [ | |
리턴 | ManifestDigest |
public static ManifestDigest GenerateDigest([NotNull] string path, [NotNull] ITaskHandler handler, [CanBeNull] IStore keepDownloads = null)
{
#region Sanity checks
if (string.IsNullOrEmpty(path)) throw new ArgumentNullException(nameof(path));
if (handler == null) throw new ArgumentNullException(nameof(handler));
#endregion
var digest = new ManifestDigest();
// Generate manifest for each available format...
foreach (var format in ManifestFormat.All)
// ... and add the resulting digest to the return value
{
var generator = new ManifestGenerator(path, format);
handler.RunTask(generator);
digest.ParseID(generator.Manifest.CalculateDigest());
}
if (digest.PartialEquals(ManifestDigest.Empty))
Log.Warn(Resources.EmptyImplementation);
if (keepDownloads != null)
{
try
{
keepDownloads.AddDirectory(path, digest, handler);
}
catch (ImplementationAlreadyInStoreException)
{}
}
return digest;
}
#endregion
public void TestGenerateDigest() { using (var packageDir = new TemporaryDirectory("0install-unit-tests")) { new PackageBuilder().AddFolder("subdir") .AddFile("file", "AAA", new DateTime(2000, 1, 1)) .WritePackageInto(packageDir); ManifestDigest digest1 = ImplementationUtils.GenerateDigest(packageDir, new MockTaskHandler()); Assert.IsNullOrEmpty(digest1.Sha1); // sha1 is deprecated Assert.IsNotNullOrEmpty(digest1.Sha1New); Assert.IsNotNullOrEmpty(digest1.Sha256); Assert.IsNotNullOrEmpty(digest1.Sha256New); ManifestDigest digest2 = ImplementationUtils.GenerateDigest(packageDir, new MockTaskHandler()); Assert.AreEqual(digest1, digest2); } }