Exemplo n.º 1
0
        public void Convert_ExampleA_Default()
        {
            // act
            var resultHtml = SemanticReleaseNotesConverter.Convert(ExampleA);

            // assert
            Assert.Equal(ExampleAHtml, resultHtml.Trim());
        }
Exemplo n.º 2
0
        public void Format_ExampleA_Default()
        {
            // act
            var resultHtml = SemanticReleaseNotesConverter.Format(GetExempleAReleaseNotes());

            // assert
            Assert.Equal(ExampleAHtml, resultHtml.Trim());
        }
Exemplo n.º 3
0
        public void Parse_TextReader_Syntax_Summaries()
        {
            // act
            var releaseNote = SemanticReleaseNotesConverter.Parse(GetTextReader(Syntax_Summaries));

            // assert
            Assert.Equal(string.Format("This is a _project_ summary with two paragraphs.Lorem ipsum dolor sit amet consectetuer **adipiscing** elit.Aliquam hendreritmi posuere lectus.{0}{0}Vestibulum `enim wisi` viverra nec fringilla in laoreetvitae risus. Donec sit amet nisl. Aliquam [semper](?) ipsumsit amet velit.", Environment.NewLine), releaseNote.Summary);
        }
Exemplo n.º 4
0
        public void Convert_TextWriter_ExampleA_Default()
        {
            // arrange
            var resultHtml = new StringBuilder();

            // act
            SemanticReleaseNotesConverter.Convert(GetTextReader(ExampleA), new StringWriter(resultHtml));

            // assert
            Assert.Equal(ExampleAHtml, resultHtml.ToString().Trim());
        }
Exemplo n.º 5
0
        public void Format_TextWriter_ExampleA_Default()
        {
            // arrange
            var resultHtml = new StringBuilder();

            // act
            SemanticReleaseNotesConverter.Format(new StringWriter(resultHtml), GetExempleAReleaseNotes());

            // assert
            Assert.Equal(ExampleAHtml, resultHtml.ToString().Trim());
        }
Exemplo n.º 6
0
        private static int Run(string[] args)
        {
            try
            {
                SetDefaults();

                var output = Console.Out;
                Logger.SetLogAction(ConsoleLogAction.Write);
                Logger.SetMinimalLevel(LogLevel.Info);

                Logger.Info("SemanticReleaseNotesParser V{0}", Assembly.GetExecutingAssembly().GetName().Version);

                // Arguments parsing
                var arguments = Arguments.ParseArguments(args);
                if (arguments.Help)
                {
                    arguments.WriteOptionDescriptions(output);
                    return(1);
                }

                // Handle debug
                if (arguments.Debug)
                {
                    Logger.SetMinimalLevel(LogLevel.Debug);
                }

                if (!FileSystem.File.Exists(arguments.ReleaseNotesPath))
                {
                    Logger.Error("Release notes file '{0}' does not exists", arguments.ReleaseNotesPath);
                    return(1);
                }

                // Settings
                string template = null;
                if (!string.IsNullOrEmpty(arguments.TemplatePath))
                {
                    if (!FileSystem.File.Exists(arguments.TemplatePath))
                    {
                        Logger.Error("Template file '{0}' does not exists", arguments.TemplatePath);
                        return(1);
                    }

                    Logger.Debug("Custom template used: '{0}'", arguments.TemplatePath);
                    template = FileSystem.File.ReadAllText(arguments.TemplatePath);
                }

                var settings = new SemanticReleaseNotesConverterSettings
                {
                    OutputFormat             = arguments.OutputFormat,
                    LiquidTemplate           = template,
                    GroupBy                  = arguments.GroupBy,
                    PluralizeCategoriesTitle = arguments.PluralizeCategoriesTitle,
                    IncludeStyle             = arguments.IncludeStyle != null,
                    CustomStyle              = GetCustomStyle(arguments.IncludeStyle)
                };

                // Parsing
                Logger.Debug("Parsing release notes '{0}'", arguments.ReleaseNotesPath);

                var releaseNotes = SemanticReleaseNotesConverter.Parse(FileSystem.File.OpenText(arguments.ReleaseNotesPath), settings);

                // Formatting
                string formattedReleaseNotes = SemanticReleaseNotesConverter.Format(releaseNotes, settings);

                Logger.Debug("Formatted release notes: {0}", formattedReleaseNotes);

                // Select output
                if (arguments.OutputType.HasFlag(OutputType.File))
                {
                    Logger.Debug("File output");
                    FileSystem.File.WriteAllText(arguments.ResultFilePath, formattedReleaseNotes);
                    Logger.Info("File '{0}' generated", arguments.ResultFilePath);
                }

                if (arguments.OutputType.HasFlag(OutputType.Environment))
                {
                    Logger.Debug("Environment output");
                    var buildServer = GetApplicableBuildServer();
                    Logger.Debug("Build server selected: {0}", buildServer.GetType().Name);
                    buildServer.SetEnvironmentVariable("SemanticReleaseNotes", formattedReleaseNotes);
                }

                return(0);
            }
            catch (Exception exception)
            {
                var error = string.Format("An unexpected error occurred:\r\n{0}", exception);
                Logger.Error(error);
                return(1);
            }
        }