public override int Execute(string[] commandLineArguments) { Options.Parse(commandLineArguments); Guard.NotNullOrWhiteSpace(packageId, "No package ID was specified. Please pass --packageId YourPackage"); Guard.NotNullOrWhiteSpace(packageVersion, "No package version was specified. Please pass --packageVersion 1.0.0.0"); Guard.NotNullOrWhiteSpace(packageHash, "No package hash was specified. Please pass --packageHash YourPackageHash"); var fileSystem = CalamariPhysicalFileSystem.GetPhysicalFileSystem(); var commandLineRunner = new CommandLineRunner( new SplitCommandOutput( new ConsoleCommandOutput(), new ServiceMessageCommandOutput( new CalamariVariableDictionary()))); NuGetVersion version; if (!NuGetVersion.TryParse(packageVersion, out version)) { throw new CommandException(String.Format("Package version '{0}' is not a valid Semantic Version", packageVersion)); } var packageStore = new PackageStore( new GenericPackageExtractorFactory().createJavaGenericPackageExtractor(fileSystem)); var packageMetadata = new ExtendedPackageMetadata() { Id = packageId, Version = packageVersion, Hash = packageHash }; var package = packageStore.GetPackage(packageMetadata); if (package == null) { Log.VerboseFormat("Package {0} version {1} hash {2} has not been uploaded.", packageMetadata.Id, packageMetadata.Version, packageMetadata.Hash); Log.VerboseFormat("Finding earlier packages that have been uploaded to this Tentacle."); var nearestPackages = packageStore.GetNearestPackages(packageId, version).ToList(); if (!nearestPackages.Any()) { Log.VerboseFormat("No earlier packages for {0} has been uploaded", packageId); return(0); } Log.VerboseFormat("Found {0} earlier {1} of {2} on this Tentacle", nearestPackages.Count, nearestPackages.Count == 1 ? "version" : "versions", packageId); foreach (var nearestPackage in nearestPackages) { Log.VerboseFormat(" - {0}: {1}", nearestPackage.Metadata.Version, nearestPackage.FullPath); Log.ServiceMessages.PackageFound(nearestPackage.Metadata.Id, nearestPackage.Metadata.Version, nearestPackage.Metadata.Hash, nearestPackage.Metadata.FileExtension, nearestPackage.FullPath); } return(0); } Log.VerboseFormat("Package {0} {1} hash {2} has already been uploaded", package.Metadata.Id, package.Metadata.Version, package.Metadata.Hash); Log.ServiceMessages.PackageFound(package.Metadata.Id, package.Metadata.Version, package.Metadata.Hash, package.Metadata.FileExtension, package.FullPath, true); return(0); }
public void IgnoresInvalidFiles() { using (new TemporaryFile(CreatePackage("1.0.0.1"))) using (new TemporaryFile(CreateEmptyFile("1.0.0.2"))) { var store = new PackageStore(new GenericPackageExtractorFactory().createStandardGenericPackageExtractor()); var packages = store.GetNearestPackages("Acme.Web", new NuGetVersion(1, 1, 1, 1)); CollectionAssert.AreEquivalent(packages.Select(c => c.Metadata.Version.ToString()), new[] { "1.0.0.1" }); } }
public void IgnoresInvalidFiles() { using (new TemporaryFile(CreatePackage("1.0.0.1"))) using (new TemporaryFile(CreateEmptyFile("1.0.0.2"))) { var store = new PackageStore(); var packages = store.GetNearestPackages("Acme.Web", new SemanticVersion(1, 1, 1, 1)); CollectionAssert.AreEquivalent(packages.Select(c => c.Metadata.Version.ToString()), new[] { "1.0.0.1" }); } }
public void OldFormatsAreIgnored() { using (new TemporaryFile(CreatePackage("0.5.0.1"))) using (new TemporaryFile(CreatePackage("1.0.0.1", true))) { var store = new PackageStore( new GenericPackageExtractorFactory().createStandardGenericPackageExtractor()); var packages = store.GetNearestPackages("Acme.Web", new SemanticVersion(1, 1, 1, 1)); CollectionAssert.AreEquivalent(new[] { "0.5.0.1" }, packages.Select(c => c.Version.ToString())); } }
public void FiltersPackagesWithHigherVersion() { using (new TemporaryFile(CreatePackage("1.0.0.1"))) using (new TemporaryFile(CreatePackage("1.0.0.2"))) using (new TemporaryFile(CreatePackage("2.0.0.2"))) { var store = new PackageStore(new GenericPackageExtractor()); var packages = store.GetNearestPackages("Acme.Web", new SemanticVersion(1, 1, 1, 1)); CollectionAssert.AreEquivalent(packages.Select(c => c.Metadata.Version.ToString()), new[] { "1.0.0.1", "1.0.0.2" }); } }
public override int Execute(string[] commandLineArguments) { Options.Parse(commandLineArguments); Guard.NotNullOrWhiteSpace(packageId, "No package ID was specified. Please pass --packageId YourPackage"); Guard.NotNullOrWhiteSpace(packageVersion, "No package version was specified. Please pass --packageVersion 1.0.0.0"); Guard.NotNullOrWhiteSpace(packageHash, "No package hash was specified. Please pass --packageHash YourPackageHash"); SemanticVersion version; if (!SemanticVersion.TryParse(packageVersion, out version)) { throw new CommandException(String.Format("Package version '{0}' is not a valid Semantic Version", packageVersion)); } var packageStore = new PackageStore(); var packageMetadata = new PackageMetadata { Id = packageId, Version = packageVersion, Hash = packageHash }; var package = packageStore.GetPackage(packageMetadata); if (package == null) { Log.VerboseFormat("Package {0} version {1} hash {2} has not been uploaded.", packageMetadata.Id, packageMetadata.Version, packageMetadata.Hash); Log.VerboseFormat("Finding earlier packages that have been uploaded to this Tentacle."); var nearestPackages = packageStore.GetNearestPackages(packageId, version).ToList(); if (!nearestPackages.Any()) { Log.VerboseFormat("No earlier packages for {0} has been uploaded", packageId); return(0); } Log.VerboseFormat("Found {0} earlier {1} of {2} on this Tentacle", nearestPackages.Count, nearestPackages.Count == 1 ? "version" : "versions", packageId); foreach (var nearestPackage in nearestPackages) { Log.VerboseFormat(" - {0}: {1}", nearestPackage.Metadata.Version, nearestPackage.FullPath); Log.ServiceMessages.PackageFound(nearestPackage.Metadata.Id, nearestPackage.Metadata.Version, nearestPackage.Metadata.Hash, nearestPackage.FullPath); } return(0); } Log.VerboseFormat("Package {0} {1} hash {2} has already been uploaded", package.Metadata.Id, package.Metadata.Version, package.Metadata.Hash); Log.ServiceMessages.PackageFound(package.Metadata.Id, package.Metadata.Version, package.Metadata.Hash, package.FullPath, true); return(0); }
public void IgnoresInvalidFiles() { using (new TemporaryFile(CreatePackage("1.0.0.1"))) using (new TemporaryFile(CreateEmptyFile("1.0.0.2"))) { var store = new PackageStore( CreatePackageExtractor(), CalamariPhysicalFileSystem.GetPhysicalFileSystem() ); var packages = store.GetNearestPackages("Acme.Web", new SemanticVersion("1.1.1.1")); CollectionAssert.AreEquivalent(new[] { "1.0.0.1" }, packages.Select(c => c.Version.ToString())); } }
public void OldFormatsAreIgnored() { using (new TemporaryFile(CreatePackage("0.5.0.1"))) using (new TemporaryFile(CreatePackage("1.0.0.1", true))) { var store = new PackageStore( new CombinedPackageExtractor(new InMemoryLog()), CalamariPhysicalFileSystem.GetPhysicalFileSystem() ); var packages = store.GetNearestPackages("Acme.Web", new SemanticVersion(1, 1, 1, 1)); CollectionAssert.AreEquivalent(new[] { "0.5.0.1" }, packages.Select(c => c.Version.ToString())); } }
void FindEarlierPackages(PackageStore packageStore, NuGetVersion version) { Log.Verbose("Finding earlier packages that have been uploaded to this Tentacle."); var nearestPackages = packageStore.GetNearestPackages(packageId, version).ToList(); if (!nearestPackages.Any()) { Log.VerboseFormat("No earlier packages for {0} has been uploaded", packageId); return; } Log.Verbose($"Found {nearestPackages.Count} earlier {(nearestPackages.Count == 1 ? "version" : "versions")} of {packageId} on this Tentacle"); foreach (var nearestPackage in nearestPackages) { Log.VerboseFormat(" - {0}: {1}", nearestPackage.Metadata.Version, nearestPackage.FullPath); Log.ServiceMessages.PackageFound(nearestPackage.Metadata.Id, nearestPackage.Metadata.Version, nearestPackage.Metadata.Hash, nearestPackage.Metadata.FileExtension, nearestPackage.FullPath); } }
public void IgnoresInvalidFiles() { using (new TemporaryFile(CreatePackage("1.0.0.1"))) using (new TemporaryFile(CreateEmptyFile("1.0.0.2"))) { var store = new PackageStore( new GenericPackageExtractorFactory().createStandardGenericPackageExtractor()); var packages = store.GetNearestPackages(new PackageMetadata() { PackageId = "Acme.Web", Version = "1.1.1.1", VersionFormat = VersionFormat.Semver, PackageSearchPattern = "Acme.Web*" }); CollectionAssert.AreEquivalent(packages.Select(c => c.Metadata.Version.ToString()), new[] { "1.0.0.1" }); } }
void FindEarlierPackages(PackageStore packageStore, IVersion version) { Log.VerboseFormat("Finding earlier packages that have been uploaded to this Tentacle."); var nearestPackages = packageStore.GetNearestPackages(packageId, version).ToList(); if (!nearestPackages.Any()) { Log.VerboseFormat("No earlier packages for {0} has been uploaded", packageId); } Log.VerboseFormat("Found {0} earlier {1} of {2} on this Tentacle", nearestPackages.Count, nearestPackages.Count == 1 ? "version" : "versions", packageId); foreach (var nearestPackage in nearestPackages) { Log.VerboseFormat(" - {0}: {1}", nearestPackage.Version, nearestPackage.FullFilePath); Log.ServiceMessages.PackageFound( nearestPackage.PackageId, nearestPackage.Version, nearestPackage.Hash, nearestPackage.Extension, nearestPackage.FullFilePath); } }