Exemple #1
0
        private static int Setup(string[] args, [CanBeNull] string rootDirectory, [CanBeNull] string buildScript)
        {
            #region Basic

            var nukeLatestReleaseVersion    = NuGetPackageResolver.GetLatestPackageVersion("Nuke.Common", includePrereleases: false);
            var nukeLatestPrereleaseVersion = NuGetPackageResolver.GetLatestPackageVersion("Nuke.Common", includePrereleases: true);
            var nukeLatestLocalVersion      = NuGetPackageResolver.GetGlobalInstalledPackage("Nuke.Common", version: null, packagesConfigFile: null)
                                              ?.Version.ToString();

            if (rootDirectory == null)
            {
                var rootDirectoryItems = new[] { ".git", ".svn" };
                rootDirectory = FileSystemTasks.FindParentDirectory(
                    EnvironmentInfo.WorkingDirectory,
                    x => rootDirectoryItems.Any(y => x.GetFileSystemInfos(y, SearchOption.TopDirectoryOnly).Any()));
            }

            if (rootDirectory == null)
            {
                Logger.Warn("Could not find root directory. Falling back to working directory.");
                rootDirectory = EnvironmentInfo.WorkingDirectory;
            }

            var buildProjectName   = ConsoleUtility.PromptForInput("How should the build project be named?", "_build");
            var buildDirectoryName = ConsoleUtility.PromptForInput("Where should the build project be located?", "./build");

            var targetPlatform = !EnvironmentInfo.GetParameter <bool>("boot")
                ? PLATFORM_NETCORE
                : ConsoleUtility.PromptForChoice("What bootstrapping method should be used?",
                                                 (PLATFORM_NETCORE, ".NET Core SDK"),
                                                 (PLATFORM_NETFX, ".NET Framework/Mono"));

            var targetFramework = targetPlatform == PLATFORM_NETFX
                ? FRAMEWORK_NET461
                : FRAMEWORK_NETCOREAPP2;

            var projectFormat = targetPlatform == PLATFORM_NETCORE
                ? FORMAT_SDK
                : ConsoleUtility.PromptForChoice("What project format should be used?",
                                                 (FORMAT_SDK, "SDK-based Format: requires .NET Core SDK"),
                                                 (FORMAT_LEGACY, "Legacy Format: supported by all MSBuild/Mono versions"));

            var nukeVersion = ConsoleUtility.PromptForChoice("Which NUKE version should be used?",
                                                             new[]
Exemple #2
0
        private static int Fix(string[] args, [CanBeNull] string rootDirectory, [CanBeNull] string buildScript)
        {
            PrintInfo();

            if (rootDirectory == null)
            {
                return(0);
            }

            var missingPackageFile = Constants.GetMissingPackageFile((AbsolutePath)rootDirectory);

            if (!File.Exists(missingPackageFile))
            {
                return(0);
            }

            Logger.Info("During last execution a package was found to be missing.");

            var missingPackageContents = File.ReadAllLines(missingPackageFile);
            var buildProjectFile       = missingPackageContents.FirstOrDefault();

            ControlFlow.Assert(File.Exists(buildProjectFile), $"File.Exists({buildProjectFile})");

            var packages = missingPackageContents
                           .Skip(1)
                           .Select(x => x.Split("@", StringSplitOptions.RemoveEmptyEntries))
                           .ForEachLazy(x => ControlFlow.Assert(x.Length == 2, "x.Length == 2"))
                           .Select(x => (packageName: x[0], version: x[1])).ToList();

            ControlFlow.Assert(packages.Count > 0, "packages.Count > 0");

            var(selectedPackageId, selectedPackageVersion) = packages.Count == 1
                ? packages.Single()
                : PromptForChoice("Which package should be added?",
                                  packages.Select(x => (x, x.packageName)).ToArray());

            if (selectedPackageVersion == ToolPathResolver.MissingPackageDefaultVersion)
            {
                var latestReleaseVersion    = NuGetPackageResolver.GetLatestPackageVersion(selectedPackageId, includePrereleases: false);
                var latestPrereleaseVersion = NuGetPackageResolver.GetLatestPackageVersion(selectedPackageId, includePrereleases: true);
                var latestLocalVersion      = NuGetPackageResolver.GetGlobalInstalledPackage(selectedPackageId, version: null, packagesConfigFile: null)
                                              ?.Version.ToString();

                var packageVersions = new[]
Exemple #3
0
        public NuGetAssemblyResolver(string projectLockFile)
        {
            NuGetPackageResolver resolver = new NuGetPackageResolver {
                ProjectLockFile = projectLockFile
            };

            resolver.Resolve();
            string[] resolvedReferences = resolver.ResolvedReferences;
            this._references = new Dictionary <string, string>(resolvedReferences.Length, StringComparer.InvariantCultureIgnoreCase);
            foreach (string str in resolvedReferences)
            {
                string str3;
                string fileName = Path.GetFileName(str);
                if (this._references.TryGetValue(fileName, out str3))
                {
                    throw new Exception($"Reference " { str } " already added as " { str3 } ".");
                }
                this._references.Add(fileName, str);
            }
        }
Exemple #4
0
    private string GetOrSelectWaveVersion()
    {
        if (WaveVersion != null)
        {
            Console.WriteLine($"Building for given wave version: {WaveVersion}");
            return(WaveVersion);
        }

        string selected = NuGetPackageResolver
                          .GetLocalInstalledPackages(RootDirectory / MainProjectName / (MainProjectName + ".csproj"))
                          .Where(x => x.Id == "Wave")
                          .OrderByDescending(x => x.Version.Version)
                          .FirstOrDefault()
                          .NotNull("There's no R# installed and no wave version is given. Please, pass wave version as an argument: '--waveVersion 193.0'")
                          .Version
                          .Version
                          .ToString(2);

        Console.WriteLine($"No WaveVersion is given. Auto-detected version:{selected}");
        return(selected);
    }
Exemple #5
0
            public CacheWriter(ResolvePackageAssets task, Stream stream = null)
            {
                var targetFramework = NuGetUtils.ParseFrameworkName(task.TargetFrameworkMoniker);

                _task              = task;
                _lockFile          = new LockFileCache(task).GetLockFile(task.ProjectAssetsFile);
                _packageResolver   = NuGetPackageResolver.CreateResolver(_lockFile, _task.ProjectPath);
                _compileTimeTarget = _lockFile.GetTargetAndThrowIfNotFound(targetFramework, runtime: null);
                _runtimeTarget     = _lockFile.GetTargetAndThrowIfNotFound(targetFramework, _task.RuntimeIdentifier);
                _stringTable       = new Dictionary <string, int>(InitialStringTableCapacity, StringComparer.Ordinal);
                _metadataStrings   = new List <string>(InitialStringTableCapacity);
                _bufferedMetadata  = new List <int>();

                if (stream == null)
                {
                    Directory.CreateDirectory(Path.GetDirectoryName(task.ProjectAssetsCacheFile));
                    stream  = File.Open(task.ProjectAssetsCacheFile, FileMode.Create, FileAccess.ReadWrite, FileShare.None);
                    _writer = new BinaryWriter(stream, TextEncoding, leaveOpen: false);
                }
                else
                {
                    _writer = new BinaryWriter(stream, TextEncoding, leaveOpen: true);
                }
            }
Exemple #6
0
        // TODO [3]: validation of wave version?

        private static IReadOnlyCollection <NuGetPackageResolver.InstalledPackage> GetInstalledPlugins()
        {
            return(NuGetPackageResolver.GetLocalInstalledPackages()
                   .Where(x => x.Metadata.GetDependencyGroups().SelectMany(y => y.Packages).Any(y => y.Id == "Wave"))
                   .ToList());
        }
Exemple #7
0
        // TODO [3]: validation of wave version?

        private static IReadOnlyCollection <NuGetPackageResolver.InstalledPackage> GetInstalledPlugins()
        => NuGetPackageResolver.GetLocalInstalledPackages(ToolPathResolver.NuGetPackagesConfigFile)
        .Where(x => x.Metadata.GetDependencyGroups().SelectMany(y => y.Packages).Any(y => y.Id == "Wave"))
        .ToList();
Exemple #8
0
        private PathConstruction.AbsolutePath GetPackageFrameworkDir()
        {
            var package = NuGetPackageResolver.GetLocalInstalledPackage("nswag.msbuild", ToolPathResolver.NuGetPackagesConfigFile);

            return(package.Directory / (package.Version.Version >= new Version(major: 11, minor: 18, build: 1) ? "tools" : "build"));
        }
        public void TestGetLocalInstalledPackagesViaAssetsFile()
        {
            var result = NuGetPackageResolver.GetLocalInstalledPackages(BuildAssetsFile, resolveDependencies: false);

            result.Should().Contain(x => x.Id == "JetBrains.ReSharper.GlobalTools");
        }
        public void TestGetLocalInstalledPackageViaAssetsFile()
        {
            var result = NuGetPackageResolver.GetLocalInstalledPackage("xunit.runner.console", BuildAssetsFile, resolveDependencies: false);

            result.Version.OriginalVersion.Should().Be(XunitConsolePackageVersion);
        }
        public async Task TestGetLatestPackageVersion(string packageId, bool includePrereleases, bool includeUnlisted, string expected)
        {
            var result = await NuGetPackageResolver.GetLatestPackageVersion(packageId, includePrereleases, includeUnlisted);

            result.Should().Be(expected);
        }