ZeroInstall.Publish.ImplementationUtils.GenerateDigest C# (CSharp) Method

GenerateDigest() private method

private GenerateDigest ( [ path, [ handler, [ keepDownloads = null ) : ManifestDigest
path [
handler [
keepDownloads [
return 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

Usage Example

示例#1
0
        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);
            }
        }
All Usage Examples Of ZeroInstall.Publish.ImplementationUtils::GenerateDigest