Example #1
0
        public void ReleaseNotesGenerator_CreatesAFileContaingReleaseNotes()
        {
            var generator            = new ReleaseNotesGenerator(new BasicOctopusToTeamcityMappingStrategy(), new OctopusDeployService(new OctopusDeploySettings()), new OctopusDeploySettings(), new BasicBuildIdToTagNameStratergy(), new GitHubService(new GitSettings()), new JiraService(new JiraSettings()));
            var releaseNotesFilePath = generator.CreateReleaseNotes("3dd8fb2");

            Assert.IsTrue(File.Exists(releaseNotesFilePath));
        }
Example #2
0
        public void KeepsCustomisations()
        {
            IRepository   repo;
            IIssueTracker issueTracker;

            new TestDataCreator(new DateTimeOffset(2012, 1, 1, 0, 0, 0, new TimeSpan()))
            .CreateRelease("0.1.0", "Issue1", "Issue2")
            .CreateRelease("0.2.0", "Issue3")
            .Build(out repo, out issueTracker);

            var tagToStartFrom     = GitRepositoryInfoFinder.GetFirstCommit(repo);
            var currentReleaseInfo = GitRepositoryInfoFinder.GetCurrentReleaseInfo(repo);

            var previousReleaseNotes = SemanticReleaseNotes.Parse(@"# vNext


Commits: ...


# 0.2.0 (05 January 2012)

**Note this release does some stuff!**


 - [2] - Edited Issue3

Another comment

Commits:  AC39885536...CA74E870F2


# 0.1.0 (03 January 2012)

## Features
 - [0] - Edited Issue1
 - [1] - Edited Issue2
 - [2] - Edited Issue3

## Fixes
 - [3] - Edited Issue4
 - [4] - Edited Issue5

This is a comment about the release

Which spans multiple lines


Commits: E413A880DB...F6924D7A0B");

            var releaseNotes = ReleaseNotesGenerator.GenerateReleaseNotes(
                repo, issueTracker, previousReleaseNotes, new Categories(),
                tagToStartFrom, currentReleaseInfo, "url/{0}...{1}");

            Approvals.Verify(releaseNotes.ToString(), Scrubber);
        }
        internal override void ExecuteInternal(IBuildConfiguration config)
        {
            if (!EnvironmentAnalyzer.IsInGitRepo(config.ProjectDirectory))
            {
                Log.LogMessage($"The project {config.ProjectName} is not inside of an initialized git repository");
                return;
            }

            IGenerator generator = new ReleaseNotesGenerator(config, OutputPath);

            generator.Execute();
        }
Example #4
0
        public override bool Execute()
        {
            var fromDate  = DateTime.Now.AddDays(DateLookback > 0 ? DateLookback * -1 : DateLookback);
            var generator = new ReleaseNotesGenerator()
            {
                CharacterLimit  = CharacterLimit,
                FromDate        = fromDate,
                Log             = (BuildHostLoggingHelper)Log,
                MaxCommit       = MaxCommit,
                OutputDirectory = OutputDirectory
            };

            generator.Execute();

            return(true);
        }
Example #5
0
        static void Main(string[] args)
        {
            var argumentProcessor       = new ArgumentProcessor(args);
            var contentPackageGenerator = new Business.ContentPackageGenerator(
                new OctopusDeployService(new OctopusDeploySettings()), new OctopusDeploySettings(),
                new DropBoxService(new DropBoxSettings()));
            var artifactDetails = contentPackageGenerator.CreatePackage(argumentProcessor.SerializationFolder,
                                                                        argumentProcessor.CurrentBuildId, argumentProcessor.ExtractPath);

            var releaseNotesGenereator = new ReleaseNotesGenerator(new BasicOctopusToTeamcityMappingStrategy(), new OctopusDeployService(new OctopusDeploySettings()), new OctopusDeploySettings(), new BasicBuildIdToTagNameStratergy(), new GitHubService(new GitSettings()), new JiraService(new JiraSettings()));
            var releaseNotesFilePath   = releaseNotesGenereator.CreateReleaseNotes(argumentProcessor.CurrentCommitId);

            artifactDetails.ReleaseNotesFilePath = releaseNotesFilePath;

            ArtifactMover.Move(artifactDetails, argumentProcessor.PackageDestinationFolder);
        }
Example #6
0
        public void AllTagsWithNoCommitsOrIssuesAfterLastRelease()
        {
            IRepository   repo;
            IIssueTracker issueTracker;

            new TestDataCreator(new DateTimeOffset(2012, 1, 1, 0, 0, 0, new TimeSpan()))
            .CreateRelease("0.1.0", "Issue1", "Issue2")
            .CreateRelease("0.2.0", "Issue3")
            .Build(out repo, out issueTracker);

            var tagToStartFrom     = GitRepositoryInfoFinder.GetFirstCommit(repo);
            var currentReleaseInfo = GitRepositoryInfoFinder.GetCurrentReleaseInfo(repo);

            var releaseNotes = ReleaseNotesGenerator.GenerateReleaseNotes(
                repo, issueTracker, new SemanticReleaseNotes(), new Categories(),
                tagToStartFrom, currentReleaseInfo, issueTracker.DiffUrlFormat);

            Approvals.Verify(releaseNotes.ToString(), Scrubber);
        }
        public void AllTags()
        {
            IRepository   repo;
            IIssueTracker issueTracker;

            new TestDataCreator(new DateTimeOffset(2012, 1, 1, 0, 0, 0, new TimeSpan()))
            .CreateRelease("0.1.0", "Issue1", "Issue2")
            .CreateRelease("0.2.0", "Issue3")
            .AddIssues("Issue4")
            .Build(out repo, out issueTracker);

            var tagToStartFrom     = GitRepositoryInfoFinder.GetFirstCommit(repo);
            var currentReleaseInfo = GitRepositoryInfoFinder.GetCurrentReleaseInfo(repo);

            var releaseNotes = ReleaseNotesGenerator.GenerateReleaseNotes(
                repo, issueTracker, new SemanticReleaseNotes(), new string[0],
                tagToStartFrom, currentReleaseInfo, string.Empty);

            Approvals.Verify(releaseNotes.ToString());
        }
Example #8
0
        public void AppendOnlyNewItems()
        {
            IRepository   repo;
            IIssueTracker issueTracker;

            new TestDataCreator(new DateTimeOffset(2012, 1, 1, 0, 0, 0, new TimeSpan()))
            .CreateRelease("0.1.0", "Issue1", "Issue2")
            .CreateRelease("0.2.0", "Issue3")
            .AddIssues("Issue4")
            .Build(out repo, out issueTracker);

            var tagToStartFrom     = GitRepositoryInfoFinder.GetFirstCommit(repo);
            var currentReleaseInfo = GitRepositoryInfoFinder.GetCurrentReleaseInfo(repo);

            var previousReleaseNotes = SemanticReleaseNotes.Parse(@"# vNext


Commits: ...


# 0.2.0 (05 January 2012)

 - [2] - Edited Issue3

Commits:  AC39885536...CA74E870F2


# 0.1.0 (03 January 2012)

 - [0] - Edited Issue1
 - [1] - Edited Issue2

Commits: E413A880DB...F6924D7A0B");

            var releaseNotes = ReleaseNotesGenerator.GenerateReleaseNotes(
                repo, issueTracker, previousReleaseNotes, new Categories(),
                tagToStartFrom, currentReleaseInfo, string.Empty);

            Approvals.Verify(releaseNotes.ToString(), Scrubber);
        }
 public void ReleaseNotesGenerator_CreatesAFileContaingReleaseNotes()
 {
     var generator = new ReleaseNotesGenerator(new BasicOctopusToTeamcityMappingStrategy(), new OctopusDeployService(new OctopusDeploySettings()), new OctopusDeploySettings(), new BasicBuildIdToTagNameStratergy(), new GitHubService(new GitSettings()), new JiraService(new JiraSettings())  );
     var releaseNotesFilePath = generator.CreateReleaseNotes("3dd8fb2");
     Assert.IsTrue(File.Exists(releaseNotesFilePath)); 
 }
        internal override void ExecuteInternal(IBuildConfiguration config)
        {
            IGenerator generator = new ReleaseNotesGenerator(config);

            generator.Execute();
        }
Example #11
0
        // output a class library instead

        /*
         * static void Main(string[] args)
         * {
         *  programStart(args);
         * }*/

        public static void programStart(string[] args)
        {
            // silent mode is true by default -
            // it's faster and quieter.
            bool silent = true;

                        #if DEBUG
            silent = false;
                        #endif

            // program header
            printProgramHeader();

            // create logger
            Logger logger = new Logger()
                            .SetLoggingType(Logger.Type.Message);

            // try to generate the notes
            try
            {
                // arguments
                if (args.Length == 0)
                {
                    throw new Exception("Settings.json file path argument missing.");
                }

                // create release notes generator
                ReleaseNotesGenerator generator = null;

                // set vars from args
                var    configuration = (SaveFile.CreateSaveFileFromPath(args[0])).GetInternalObject();
                string generatorType = configuration.GetValue("Generator Type").ToString();

                var settings = new NamedLookup("Settings");
                settings["Team Project Path"] = configuration.GetValue("Team Project Path").ToString();
                settings["Project Name"]      = configuration.GetValue("Project Name").ToString();
                settings["Project Subpath"]   = configuration.GetValue("Project Subpath").ToString();
                settings["Iteration"]         = configuration.GetValue("Iteration").ToString();
                settings["Database"]          = configuration.GetValue("Database").ToString();
                settings["Database Server"]   = configuration.GetValue("Database Server").ToString();
                settings["Web Server"]        = configuration.GetValue("Web Server").ToString();
                settings["Doc Type"]          = "APPLICATION BUILD/RELEASE NOTES\n";
                settings["Web Location"]      = configuration.GetValue("Web Location").ToString();

                switch (generatorType.ToLowerInvariant())
                {
                case "excel":
                    generator = ExcelGenerator.ExcelGeneratorFactory(settings, silent);
                    break;

                case "server":
                    generator = ExcelServerGenerator.ExcelServerGeneratorFactory(settings, silent);
                    break;

                case "word":
                    generator = WordGenerator.WordGeneratorFactory(settings, silent);
                    break;

                case "html":
                    throw new NotImplementedException("Not implemented generator type");

                default:
                    throw new Exception("Invalid generator type specified");
                }

                // generate
                generator.GenerateReleaseNotes();
            }
            catch (Exception e)
            {
                // display error
                logger
                .SetLoggingType(Logger.Type.Error)
                .SetMessage(e.Message)
                .Display();
                Thread.Sleep(1000);
            }

            if (!silent)             //if we're in silent mode, the program exits. The file has been saved.
            {
                // wait for exit
                logger.SetLoggingType(Logger.Type.General)
                .SetMessage("Press any key to exit.")
                .Display();

                // wait for key
                Console.ReadKey();
            }
        }