Ejemplo n.º 1
0
        private ToolRestoreResult InstallPackages(
            ToolManifestPackage package,
            FilePath?configFile)
        {
            string targetFramework = BundledTargetFramework.GetTargetFrameworkMoniker();

            if (PackageHasBeenRestored(package, targetFramework))
            {
                return(ToolRestoreResult.Success(
                           saveToCache: Array.Empty <(RestoredCommandIdentifier, RestoredCommand)>(),
                           message: string.Format(
                               LocalizableStrings.RestoreSuccessful, package.PackageId,
                               package.Version.ToNormalizedString(), string.Join(", ", package.CommandNames))));
            }

            try
            {
                IToolPackage toolPackage =
                    _toolPackageInstaller.InstallPackageToExternalManagedLocation(
                        new PackageLocation(
                            nugetConfig: configFile,
                            additionalFeeds: _sources,
                            rootConfigDirectory: package.FirstEffectDirectory),
                        package.PackageId, ToVersionRangeWithOnlyOneVersion(package.Version), targetFramework,
                        verbosity: _verbosity);

                if (!ManifestCommandMatchesActualInPackage(package.CommandNames, toolPackage.Commands))
                {
                    return(ToolRestoreResult.Failure(
                               string.Format(LocalizableStrings.CommandsMismatch,
                                             JoinBySpaceWithQuote(package.CommandNames.Select(c => c.Value.ToString())),
                                             package.PackageId,
                                             JoinBySpaceWithQuote(toolPackage.Commands.Select(c => c.Name.ToString())))));
                }

                return(ToolRestoreResult.Success(
                           saveToCache: toolPackage.Commands.Select(command => (
                                                                        new RestoredCommandIdentifier(
                                                                            toolPackage.Id,
                                                                            toolPackage.Version,
                                                                            NuGetFramework.Parse(targetFramework),
                                                                            Constants.AnyRid,
                                                                            command.Name),
                                                                        command)).ToArray(),
                           message: string.Format(
                               LocalizableStrings.RestoreSuccessful,
                               package.PackageId,
                               package.Version.ToNormalizedString(),
                               string.Join(" ", package.CommandNames))));
            }
            catch (ToolPackageException e)
            {
                return(ToolRestoreResult.Failure(package.PackageId, e));
            }
        }
Ejemplo n.º 2
0
        private bool PackageHasBeenRestored(
            ToolManifestPackage package,
            string targetFramework)
        {
            var sampleRestoredCommandIdentifierOfThePackage = new RestoredCommandIdentifier(
                package.PackageId,
                package.Version,
                NuGetFramework.Parse(targetFramework),
                Constants.AnyRid,
                package.CommandNames.First());

            return(_localToolsResolverCache.TryLoad(
                       sampleRestoredCommandIdentifierOfThePackage,
                       out var restoredCommand) &&
                   _fileSystem.File.Exists(restoredCommand.Executable.Value));
        }
Ejemplo n.º 3
0
        private void AssertUpdateSuccess(FilePath?manifestFile = null, NuGetVersion packageVersion = null)
        {
            packageVersion ??= _packageNewVersionA;
            IReadOnlyCollection <ToolManifestPackage> manifestPackages = _toolManifestFinder.Find(manifestFile);

            manifestPackages.Should().HaveCount(1);
            ToolManifestPackage addedPackage = manifestPackages.Single();

            addedPackage.Version.Should().Be(packageVersion);
            _localToolsResolverCache.TryLoad(new RestoredCommandIdentifier(
                                                 addedPackage.PackageId,
                                                 addedPackage.Version,
                                                 NuGetFramework.Parse(BundledTargetFramework.GetTargetFrameworkMoniker()),
                                                 Constants.AnyRid,
                                                 addedPackage.CommandNames.Single()),
                                             out RestoredCommand restoredCommand
                                             ).Should().BeTrue();

            _fileSystem.File.Exists(restoredCommand.Executable.Value);
        }
Ejemplo n.º 4
0
        private bool PackageHasBeenRestored(
            ToolManifestPackage package,
            string targetFramework)
        {
            var sampleRestoredCommandIdentifierOfThePackage = new RestoredCommandIdentifier(
                package.PackageId,
                package.Version,
                NuGetFramework.Parse(targetFramework),
                "any",
                package.CommandNames.First());

            if (_localToolsResolverCache.TryLoad(
                    sampleRestoredCommandIdentifierOfThePackage,
                    _nugetGlobalPackagesFolder,
                    out _))
            {
                return(true);
            }

            return(false);
        }