public void CanDetectJiraFromUrl() { IIssueTracker issueTracker; var created = IssueTrackerFactory.TryCreateIssueTrackerFromUrl("https://catelproject.atlassian.net/", "CTL", null, out issueTracker); created.ShouldBeTrue(); var jiraIssueTracker = issueTracker.ShouldBeOfType <JiraIssueTracker>(); jiraIssueTracker.ShouldNotBeNull(); }
public void CanDetectGitHubFromUrl() { IIssueTracker issueTracker; var created = IssueTrackerFactory.TryCreateIssueTrackerFromUrl("https://github.com/GitTools/GitTools.IssueTrackers", null, null, out issueTracker); created.ShouldBeTrue(); var githubIssueTracker = issueTracker.ShouldBeOfType <GitHubIssueTracker>(); githubIssueTracker.Organisation.ShouldBe("GitTools"); githubIssueTracker.Repository.ShouldBe("GitTools.IssueTrackers"); }
public async Task <SemanticReleaseNotes> GenerateReleaseNotesAsync(SemanticReleaseNotes releaseNotesToUpdate) { var gitRepository = new Repository(Repository.Discover(_generationParameters.WorkingDirectory)); IIssueTracker issueTracker = null; var categories = new Categories(_generationParameters.Categories, _generationParameters.AllLabels); var tagToStartFrom = _generationParameters.AllTags ? gitRepository.GetFirstCommit() : gitRepository.GetLastTaggedCommit() ?? gitRepository.GetFirstCommit(); var currentReleaseInfo = gitRepository.GetCurrentReleaseInfo(); if (!string.IsNullOrEmpty(_generationParameters.Version)) { currentReleaseInfo.Name = _generationParameters.Version; currentReleaseInfo.When = DateTimeOffset.Now; } else { currentReleaseInfo.Name = "vNext"; } if (_generationParameters.UseIssueTracker) { if (_generationParameters.IssueTracker.Type.HasValue) { issueTracker = IssueTrackerFactory.CreateIssueTracker(new IssueTrackerSettings(_generationParameters.IssueTracker.Server, _generationParameters.IssueTracker.Type.Value) { Project = _generationParameters.IssueTracker.ProjectId, Authentication = _generationParameters.IssueTracker.Authentication.ToIssueTrackerSettings() }); } else { if (!TryRemote(gitRepository, "upstream", _generationParameters, out issueTracker) && !TryRemote(gitRepository, "origin", _generationParameters, out issueTracker)) { throw new Exception("Unable to guess issue tracker through remote, specify issue tracker type on the command line"); } } } var releaseNotes = _generationParameters.UseIssueTracker ? await GenerateReleaseNotesAsync(_generationParameters, gitRepository, issueTracker, releaseNotesToUpdate, categories, tagToStartFrom, currentReleaseInfo) : await GenerateReleaseNotesAsync( _generationParameters, gitRepository, releaseNotesToUpdate, categories, tagToStartFrom, currentReleaseInfo); return(releaseNotes); }
private static bool TryRemote(Repository gitRepository, string name, ReleaseNotesGenerationParameters context, out IIssueTracker issueTracker) { var upstream = gitRepository.Network.Remotes[name]; if (upstream == null) { issueTracker = null; return(false); } return(IssueTrackerFactory.TryCreateIssueTrackerFromUrl( upstream.Url, context.IssueTracker.Authentication.ToIssueTrackerSettings(), out issueTracker)); }