public async Task PackageIndexFile_RemoveAllPackagesVerifyFileRemoved() { using (var testContext = new SleetTestContext()) { var inputA = TestUtility.GetPackageInput("a", testContext); var inputB = TestUtility.GetPackageInput("b", testContext); var file = new PackageIndexFile(testContext.SleetContext, "test.json", persistWhenEmpty: false); await file.AddPackageAsync(inputA); await file.AddPackageAsync(inputB); await file.RemovePackageAsync(inputA.Identity); await file.RemovePackageAsync(inputB.Identity); await testContext.Commit(); var packages = await file.GetPackagesAsync(); var path = Path.Combine(testContext.Target, "test.json"); File.Exists(path).Should().BeFalse(); } }
public async Task PackageIndexFile_InitANewFileVerifyCreated() { using (var testContext = new SleetTestContext()) { var file = new PackageIndexFile(testContext.SleetContext, "test.json", persistWhenEmpty: true); await file.InitAsync(); await testContext.SleetContext.Source.Commit(testContext.SleetContext.Log, testContext.SleetContext.Token); var path = Path.Combine(testContext.Target, "test.json"); File.Exists(path).Should().BeTrue(); } }
public async Task PackageIndexFile_AddPackageVerifyAdd() { using (var testContext = new SleetTestContext()) { var input = TestUtility.GetPackageInput("a", testContext); var file = new PackageIndexFile(testContext.SleetContext, "test.json", persistWhenEmpty: true); await file.AddPackageAsync(input); var packages = await file.GetPackagesAsync(); packages.ShouldBeEquivalentTo(new[] { new PackageIdentity("a", NuGetVersion.Parse("1.0.0")) }); var symbols = await file.GetSymbolsPackagesAsync(); symbols.Should().BeEmpty(); } }
public override bool Execute() { string indexFilePath = PackageIndexFile.GetMetadata("FullPath"); PackageIndex index = File.Exists(indexFilePath) ? index = PackageIndex.Load(indexFilePath) : new PackageIndex(); if (PackageIds != null && PackageIds.Any()) { _packageIdsToInclude = new HashSet <string>(PackageIds.Select(i => i.ItemSpec), StringComparer.OrdinalIgnoreCase); } foreach (var package in Packages.NullAsEmpty().Select(f => f.GetMetadata("FullPath"))) { Log.LogMessage($"Updating from {package}."); UpdateFromPackage(index, package); } foreach (var packageFolder in PackageFolders.NullAsEmpty().Select(f => f.GetMetadata("FullPath"))) { var nupkgs = Directory.EnumerateFiles(packageFolder, "*.nupkg", SearchOption.TopDirectoryOnly); if (nupkgs.Any()) { foreach (var nupkg in nupkgs) { Log.LogMessage($"Updating from {nupkg}."); UpdateFromPackage(index, nupkg, true); } } else { var nuspecFolders = Directory.EnumerateFiles(packageFolder, "*.nuspec", SearchOption.AllDirectories) .Select(nuspec => Path.GetDirectoryName(nuspec)); foreach (var nuspecFolder in nuspecFolders) { Log.LogMessage($"Updating from {nuspecFolder}."); UpdateFromFolderLayout(index, nuspecFolder, true); } } } if (BaselinePackages != null) { foreach (var baselinePackage in BaselinePackages) { var info = GetOrCreatePackageInfo(index, baselinePackage.ItemSpec); var version = baselinePackage.GetMetadata("Version"); info.BaselineVersion = Version.Parse(version); } } if (StablePackages != null) { foreach (var stablePackage in StablePackages) { var info = GetOrCreatePackageInfo(index, stablePackage.ItemSpec); var version = stablePackage.GetMetadata("Version"); info.StableVersions.Add(Version.Parse(version)); } } if (ModuleToPackages != null) { foreach (var moduleToPackage in ModuleToPackages) { var package = moduleToPackage.GetMetadata("Package"); index.ModulesToPackages[moduleToPackage.ItemSpec] = package; } } if (!String.IsNullOrEmpty(PreRelease)) { index.PreRelease = PreRelease; } index.Save(indexFilePath); return(!Log.HasLoggedErrors); }
public override bool Execute() { string indexFilePath = PackageIndexFile.GetMetadata("FullPath"); PackageIndex index = File.Exists(indexFilePath) ? index = PackageIndex.Load(indexFilePath) : new PackageIndex(); if (PackageIds != null && PackageIds.Any()) { _packageIdsToInclude = new HashSet <string>(PackageIds.Select(i => i.ItemSpec), StringComparer.OrdinalIgnoreCase); } foreach (var package in Packages.NullAsEmpty().Select(f => f.GetMetadata("FullPath"))) { Log.LogMessage($"Updating from {package}."); UpdateFromPackage(index, package); } foreach (var packageFolder in PackageFolders.NullAsEmpty().Select(f => f.GetMetadata("FullPath"))) { var nupkgs = Directory.EnumerateFiles(packageFolder, "*.nupkg", SearchOption.TopDirectoryOnly); if (nupkgs.Any()) { foreach (var nupkg in nupkgs) { Log.LogMessage($"Updating from {nupkg}."); UpdateFromPackage(index, nupkg, true); } } else { var nuspecFolders = Directory.EnumerateFiles(packageFolder, "*.nuspec", SearchOption.AllDirectories) .Select(nuspec => Path.GetDirectoryName(nuspec)); foreach (var nuspecFolder in nuspecFolders) { Log.LogMessage($"Updating from {nuspecFolder}."); UpdateFromFolderLayout(index, nuspecFolder, true); } } } if (BaselinePackages != null) { foreach (var baselinePackage in BaselinePackages) { var info = GetOrCreatePackageInfo(index, baselinePackage.ItemSpec); var version = baselinePackage.GetMetadata("Version"); info.BaselineVersion = Version.Parse(version); } } if (StablePackages != null) { foreach (var stablePackage in StablePackages) { var info = GetOrCreatePackageInfo(index, stablePackage.ItemSpec); var version = stablePackage.GetMetadata("Version"); info.StableVersions.Add(Version.Parse(version)); } } if (ModuleToPackages != null) { foreach (var moduleToPackage in ModuleToPackages) { var package = moduleToPackage.GetMetadata("Package"); index.ModulesToPackages[moduleToPackage.ItemSpec] = package; } } if (InboxFrameworkListFolder != null) { index.MergeFrameworkLists(InboxFrameworkListFolder.GetMetadata("FullPath")); } if (InboxFrameworkLayoutFolders != null) { foreach (var inboxFrameworkLayoutFolder in InboxFrameworkLayoutFolders) { var layoutDirectory = inboxFrameworkLayoutFolder.GetMetadata("FullPath"); var targetFramework = NuGetFramework.Parse(inboxFrameworkLayoutFolder.GetMetadata("TargetFramework")); index.MergeInboxFromLayout(targetFramework, layoutDirectory); } } if (SetBaselineVersionsToLatestStableVersion) { foreach (var packageInfo in index.Packages.Values) { var maxVersion = packageInfo.StableVersions.Max(); packageInfo.BaselineVersion = maxVersion; } } if (UpdateStablePackageInfo && Packages == null && PackageFolders == null) { // Given we will query the web for every package, we should run in parallel to try to optimize the performance. Parallel.ForEach(index.Packages, (package) => { IEnumerable <Version> stablePackageVersions = NuGetUtility.GetAllVersionsForPackageId(package.Key, includePrerelease: false, includeUnlisted: false, Log, CancellationToken.None); package.Value.StableVersions.Clear(); package.Value.StableVersions.AddRange(stablePackageVersions); }); } if (!String.IsNullOrEmpty(PreRelease)) { index.PreRelease = PreRelease; } index.Save(indexFilePath); return(!Log.HasLoggedErrors); }