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" });
                }
        }
Exemplo n.º 3
0
        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" });
                }
        }
Exemplo n.º 4
0
        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()));
                }
        }
Exemplo n.º 5
0
        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" });
                    }
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
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()));
                }
        }
Exemplo n.º 8
0
        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()));
                }
        }
Exemplo n.º 9
0
        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);
            }
        }
Exemplo n.º 10
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(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" });
                }
        }
Exemplo n.º 11
0
        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);
            }
        }