Ejemplo n.º 1
0
        public void NuspecFileShouldHaveValuesAfterInstantiation()
        {
            NuspecFile file = new NuspecFile("test1.nuspec");

            Expect.IsNotNullOrEmpty(file.Version.Value);
            Expect.AreEqual("1", file.Version.Major);
            Expect.AreEqual("0", file.Version.Minor);
            Expect.AreEqual("0", file.Version.Patch);
            Expect.IsNotNullOrEmpty(file.Title);
            Expect.IsNotNullOrEmpty(file.Id);
            Expect.IsNotNullOrEmpty(file.Authors);
            Expect.IsNotNullOrEmpty(file.Owners);
            Expect.IsNotNullOrEmpty(file.ReleaseNotes);
            Expect.IsFalse(file.RequireLicenseAcceptance);
            Expect.IsNotNullOrEmpty(file.Copyright);
            Expect.IsNotNullOrEmpty(file.Description);
            file.AddDependency("monkey", "1.0.0");
            file.AddDependency("test", "[2]");
            file.Version.IncrementPatch();
            file.Save();
            string content = file.Path.SafeReadFile();

            Out(content, ConsoleColor.Cyan);
            File.Delete(file.Path);
        }
Ejemplo n.º 2
0
        public void CanWriteNuspecFile()
        {
            NuspecFile testFile = new NuspecFile($"./{nameof(CanWriteNuspecFile)}.nuspec")
            {
                Id = "TestId", Version = "1.0.x", Authors = "Bryan Apellanes", Description = "test description"
            };

            FileInfo fileInfo = testFile.Write();

            Console.WriteLine(fileInfo.FullName.SafeReadFile());
            string expected = "<package xmlns=\"http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd\">\r\n" +
                              "  <metadata>\r\n" +
                              "    <id>TestId</id>\r\n" +
                              "    <version>1.0.x</version>\r\n" +
                              "    <authors>Bryan Apellanes</authors>\r\n" +
                              "    <description>test description</description>\r\n" +
                              "  </metadata>\r\n" +
                              "  <files>\r\n" +
                              "    <file src=\"_._\" target=\"lib/net5.0\" />\r\n" +
                              "    <file src=\"$publishdir$\\net5.0\\**\\*\" target=\"tools/net5.0\" />\r\n" +
                              "  </files>\r\n" +
                              "</package>";

            Expect.AreEqual(expected, fileInfo.FullName.SafeReadFile());
        }
Ejemplo n.º 3
0
        private async Task <int> CreatePackage(NuspecFile nuspecFile, CancellationToken cancellationToken)
        {
            var packageStopwatch = Stopwatch.StartNew();

            await UpdateNuspec(nuspecFile, cancellationToken);

            var commandLine = _roboNuGetFile.NuGet.Commands["pack"].Format(new
            {
                NuspecFileName      = nuspecFile.FileName,
                OutputDirectoryName = _roboNuGetFile.NuGet.OutputDirectoryName,
            });

            var result = await Task.Run(() => _processExecutor.NoWindowExecuteAsync("nuget", commandLine), cancellationToken);

            lock (_consoleSyncLock)
            {
                //Logger.ConsoleMessageLine(m => m.text($"Executed: {result.Arguments}"));
                Logger.ConsoleMessageLine(m => m.text(result.Output.Trim()));

                if (result.ExitCode != ExitCode.Success)
                {
                    Logger.ConsoleError(result.Error.Trim());
                    Logger.ConsoleMessageLine(p => p.Indent().text($"Could not create package: {nuspecFile.Id}").color(ConsoleColor.Red));
                }

                //Logger.ConsoleMessageLine(p => p.text($"Elapsed: {packageStopwatch.Elapsed.TotalSeconds:F1} sec [{Thread.CurrentThread.ManagedThreadId}] ({nuspecFile.Id})"));
                Logger.ConsoleMessageLine(p => p.text($"Elapsed: {packageStopwatch.Elapsed.TotalSeconds:F1} sec"));
                //Logger.ConsoleMessageLine(p => p.text($"-"));
                Logger.ConsoleMessageLine(_ => _);
            }

            return(result.ExitCode);
        }
Ejemplo n.º 4
0
        private IEnumerable <string> NuspecFileDepencyIds(string nuspecfileName)
        {
            var    pathHelper         = new TestPathHelper("NuspecTests/NuspecFiles");
            string nuspecAbsolutePath = pathHelper.rootToAbsolutePath("~/" + nuspecfileName);

            var nuspecFile = new NuspecFile(nuspecAbsolutePath);

            return(nuspecFile.DependencyIds);
        }
Ejemplo n.º 5
0
        private async Task UpdateNuspec(NuspecFile nuspecFile, CancellationToken cancellationToken)
        {
            var updateNuspec = (UpdateNuspec)_commands[ImmutableKeySet <SoftString> .Create(nameof(UpdateNuspec))];

            updateNuspec.NuspecFile = nuspecFile;
            updateNuspec.Version    = _roboNuGetFile.PackageVersion;

            await updateNuspec.ExecuteAsync(cancellationToken);
        }
Ejemplo n.º 6
0
        public void CanAddPackageDependencies()
        {
            NuspecFile nuspec = new NuspecFile();

            Expect.IsTrue(nuspec.Dependencies.Length == 0);
            nuspec.AddPackageDependencies(".\\test_packages.config");
            Expect.IsTrue(nuspec.Dependencies.Length == 2);
            Expect.IsTrue(nuspec.Dependencies[0].Id.Equals("TestPackage1"));
            Expect.IsTrue(nuspec.Dependencies[0].Version.Equals("1.0.0"));
            Expect.IsTrue(nuspec.Dependencies[1].Id.Equals("TestPackage2"));
            Expect.IsTrue(nuspec.Dependencies[1].Version.Equals("2.0.0"));
        }
        public void TestNuspecReader01()
        {
            var nuspecFiles = new List <string> {
                Path.Combine(sampleFileHelper.GetSamplesFolder(), "nuspec", "Fable.Template.Elmish.React.nuspec"),
                Path.Combine(sampleFileHelper.GetSamplesFolder(), "nuspec", "DevExpress.DotNet.Web.ProjectTemplates.nuspec")
            };

            foreach (var filepath in nuspecFiles)
            {
                NuspecFile nuspec = NuspecFile.CreateFromNuspecFile(filepath);
                Assert.NotNull(nuspec);
                Assert.True(!string.IsNullOrEmpty(nuspec.Metadata.Id));
            }
        }
Ejemplo n.º 8
0
        public IEnumerable <NuspecFile> FindNuspecFiles()
        {
            var nuspecPattern         = Pattern.FromWildcard($"*{NuspecFile.Extension}");
            var solutionDirectoryName = Path.GetDirectoryName(FindSolutionFile());

            var nuspecFileNames =
                _fileSystem
                .EnumerateDirectories(solutionDirectoryName, CreateExcludePredicate())
                .SelectMany(_fileSystem.EnumerateFiles)
                .Where(name => nuspecPattern.Matches(name));

            // Searching for *.nuspec only one level deep.
            foreach (var nuspecFileName in nuspecFileNames)
            {
                yield return(NuspecFile.Load(nuspecFileName));
            }
        }
Ejemplo n.º 9
0
        public override Task ExecuteAsync(CancellationToken cancellationToken)
        {
            var nuspecDirectoryName = Path.GetDirectoryName(NuspecFile.FileName);
            var packagesConfig      = PackagesConfigFile.Load(nuspecDirectoryName);
            var csProj = CsProjFile.Load(Path.Combine(nuspecDirectoryName, $"{NuspecFile.Id}{CsProjFile.Extension}"));

            var packageDependencies = packagesConfig.Packages.Concat(csProj.PackageReferences).Select(package => new NuspecDependency {
                Id = package.Id, Version = package.Version
            });
            var projectDependencies = csProj.ProjectReferences.Select(projectReferenceName => new NuspecDependency {
                Id = projectReferenceName, Version = Version
            });

            NuspecFile.Dependencies = packageDependencies.Concat(projectDependencies);
            NuspecFile.Version      = Version;
            NuspecFile.Save();

            return(Task.CompletedTask);
        }
Ejemplo n.º 10
0
        private static List <AssemblyAttributeInfo> GetAssemblyAttributeInfos(string fileName, string version, string nuspecRoot)
        {
            List <AssemblyAttributeInfo> _assemblyAttributeInfos = new List <AssemblyAttributeInfo>();
            NuspecFile nuspecFile = GetNuspecFile(fileName, nuspecRoot);

            _assemblyAttributeInfos = new List <AssemblyAttributeInfo>();
            _assemblyAttributeInfos.Add(new AssemblyAttributeInfo {
                AttributeName = "AssemblyVersion", Value = version
            });
            _assemblyAttributeInfos.Add(new AssemblyAttributeInfo {
                AttributeName = "AssemblyFileVersion", Value = version
            });
            _assemblyAttributeInfos.Add(new AssemblyAttributeInfo {
                AttributeName = "AssemblyCompany", NuspecFile = nuspecFile, NuspecProperty = "Owners"
            });
            _assemblyAttributeInfos.Add(new AssemblyAttributeInfo {
                AttributeName = "AssemblyDescription", NuspecFile = nuspecFile, NuspecProperty = "Description"
            });

            return(_assemblyAttributeInfos);
        }
Ejemplo n.º 11
0
        private static NuspecFile GetNuspecFile(string fileName, string nuspecRoot)
        {
            DirectoryInfo nuspecRootDir = new DirectoryInfo(nuspecRoot);

            FileInfo[] nuspecFiles    = nuspecRootDir.GetFiles("{0}.nuspec"._Format(fileName), SearchOption.AllDirectories);
            string     nuspecFilePath = string.Empty;
            NuspecFile nuspecFile     = null;

            if (nuspecFiles.Length == 1)
            {
                nuspecFilePath = nuspecFiles[0].FullName;
            }
            else if (nuspecFiles.Length > 1)
            {
                nuspecFilePath = SelectNuspecFile(nuspecFiles);
            }

            if (!string.IsNullOrEmpty(nuspecFilePath))
            {
                nuspecFile = new NuspecFile(nuspecFilePath);
            }

            return(nuspecFile);
        }
Ejemplo n.º 12
0
 public void PathIsNotNuspec()
 {
     Assert.IsFalse(NuspecFile.IsNuspecFile("~/Views/blah.xml"));
 }
Ejemplo n.º 13
0
 public void PathIsNuspec()
 {
     Assert.IsTrue(NuspecFile.IsNuspecFile("~/Views/blah.nuspec"));
 }
 public void Read(string fileName, string id)
 {
     _nuspecFile = new NuspecFile(fileName);
     Assert.Equal(id, _nuspecFile.Id);
 }
Ejemplo n.º 15
0
        public static void SetBamInfo()
        {
            string nuspecRoot    = GetNuspecRoot();
            string bamInfoPath   = (Arguments["baminfo.json"] ?? Prompt("Enter the path to the baminfo.json file"));
            string versionString = GetVersion();
            string srcRoot       = GetSourceRoot();

            BamInfo info       = bamInfoPath.FromJsonFile <BamInfo>();
            int     sinceMajor = info.MajorVersion;
            int     sinceMinor = info.MinorVersion;
            int     sincePatch = info.PatchVersion;

            Out("*** baminfo.json ***", ConsoleColor.Cyan);
            OutLine(info.PropertiesToString(), ConsoleColor.Cyan);
            OutLine("***", ConsoleColor.Cyan);
            OutLineFormat("Updating version from {0} to {1}", ConsoleColor.Yellow, info.VersionString, versionString);
            info.VersionString = versionString;
            info.ToJsonFile(bamInfoPath);

            GitReleaseNotes miscReleaseNotes = GitReleaseNotes.MiscSinceVersion(srcRoot, sinceMajor, sinceMinor, sincePatch);

            miscReleaseNotes.Summary = $"Version {versionString}";
            OutLineFormat("Updating release notes:\r\n{0}", ConsoleColor.DarkYellow, info.ReleaseNotes);
            info.ReleaseNotes = miscReleaseNotes.Value;
            info.ToJsonFile(bamInfoPath);
            string rootReleaseNotes = Path.Combine(srcRoot, "RELEASENOTES");

            miscReleaseNotes.Value.SafeWriteToFile(rootReleaseNotes, true);

            DirectoryInfo nuspecRootDir = new DirectoryInfo(nuspecRoot);

            FileInfo[] nuspecFiles = nuspecRootDir.GetFiles("*.nuspec", SearchOption.AllDirectories);
            foreach (FileInfo file in nuspecFiles)
            {
                NuspecFile nuspecFile = new NuspecFile(file.FullName);
                nuspecFile.Authors = info.Authors;
                nuspecFile.Owners  = info.Owners;
                GitReleaseNotes releaseNotes = GitReleaseNotes.SinceVersion(nuspecFile.Id, srcRoot, sinceMajor, sinceMinor, sincePatch);
                if (!WriteReleaseNotes(srcRoot, releaseNotes, out string projectRoot))
                {
                    Warn("Unable to find project directory ({0}) to write release notes", projectRoot);
                }
                releaseNotes.Summary    = $"Version {versionString}";
                nuspecFile.ReleaseNotes = releaseNotes.Value;
                nuspecFile.Copyright    = "Copyright © {0} {1}"._Format(info.Owners, DateTime.UtcNow.Year);
                nuspecFile.LicenseUrl   = info.LicenseUrl;
                nuspecFile.ProjectUrl   = info.ProjectUrl;
                string buildNumber = !string.IsNullOrEmpty(info.BuildNumber) ? "-{0}"._Format(info.BuildNumber) : "";
                string patch       = string.Format("{0}{1}", info.PatchVersion.ToString(), buildNumber);
                nuspecFile.Version.Major = info.MajorVersion.ToString();
                nuspecFile.Version.Minor = info.MinorVersion.ToString();
                nuspecFile.Version.Patch = patch;
                List <NugetPackageIdentifier> bamDependencies = new List <NugetPackageIdentifier>();
                if (nuspecFile.Dependencies != null)
                {
                    nuspecFile.Dependencies.Where(npi => npi.Id.StartsWith(typeof(Args).Namespace)).Each(npi =>
                    {
                        bamDependencies.Add(new NugetPackageIdentifier(npi.Id, info.VersionString));
                    });
                    nuspecFile.Dependencies = bamDependencies.ToArray();
                }
                nuspecFile.Save();
            }
        }