GetStatusesFromMetadata(ProjectFilter projectFilter) { var json = _jiraContext.Api.GetStatusesByProject().Result; var statusesByProjects = json .ToObject <List <StatusesByProject> >() .Where(s => projectFilter.IncludesProject(s.Project)); foreach (var project in statusesByProjects) { foreach (var type in project.StatusesByType) { var categories = type.Statuses .Select(s => (name: s.Name, cat: s.StatusCategory.Name)) .ToLookup(s => s.cat, s => s.name); foreach (var category in categories) { foreach (var status in category) { yield return(project.Project, type.Name, category.Key, status); } } } } }
public void IssuesByProject( ExportOptions exportOptions, [Option(Description = "Resumes export after this issue")] IssueId resumeAfter, [Option(Description = "Specify if the issue list should come from Jira, Cache or Both. " + "Use Jira when there are unknown updates or issues have been exported out of order by id. " + "Use Cache for speed when you only need to updates. " + "Using Both starts with Cache and then queries Jira for issue keys " + "greater than what have been cached per project.")] IssueSource?issueListSource = null, [Operand(Description = "The keys of the projects to export. If none are specified, all projects are exported")] List <string> projects = null) { if (_jiraApiSettings.JiraOffline && issueListSource.HasValue && issueListSource.Value.HasFlag(IssueSource.Jira)) { throw new ArgumentException( $"--{nameof(issueListSource)} cannot include {nameof(IssueSource.Jira)} " + $"when --{nameof(_jiraApiSettings.JiraOffline)} is specified."); } if (!_jiraApiSettings.JiraOffline) { ((CacheJiraApi)_jiraApi).IssueListSource = issueListSource.GetValueOrDefault(IssueSource.Both); } var projectFilter = new ProjectFilter { Projects = projects }; var issueIds = _jiraContext.Api.GetIssueIds(projectFilter, out int totalCount, resumeAfter); issueIds.EnumerateOperation(totalCount, "Export Issue", exportOptions.FailFile, _cancellationToken, ExportIssue); }
GetStatusesFromExported(ProjectFilter projectFilter) { return(_jiraContext.LocalJiraApi .GetIssueIds(projectFilter, out _) .Select(_migrationRepository.Get) .Where(m => m != null) .Select(m => (m.IssueId.Project, m.IssueType, m.StatusCategory, m.Status))); }
internal static IEnumerable <IssueId> GetIssueIds(this IJiraApi jiraApi, ProjectFilter projectFilter, out int totalCount, IssueId resumeAfter = null) { var projects = projectFilter.Projects; projects.Sort(); totalCount = jiraApi.GetTotalIssueCount(projects, resumeAfter).Result; return(projects.SelectMany(p => jiraApi.GetIssueIdsByProject(p, resumeAfter))); }
public void StubIssueTypesMapping( ProjectFilter projectFilter, [Option(ShortName = "H", LongName = "print-headers")] bool printHeaders = false, [Option(ShortName = "p", LongName = "print-project")] bool printProject = false, [Option(ShortName = "t", LongName = "print-issue-type")] bool printIssueType = false, [Option(ShortName = "d", LongName = "print-description")] bool printDescription = false, [Option(ShortName = "i", LongName = "print-issue-count")] bool printIssueCount = false, [Option(ShortName = "x", LongName = "exportedOnly", Description = "When specified, only issue types existing for exported items will be printed")] bool exportedOnly = false) { var somethingIsPrinting = new[] { printProject, printIssueType, printDescription }.Any(p => p); if (!somethingIsPrinting) { _console.Out.WriteLine("Select an element to print: -ptd"); return; } string Row(string project, string issueType, string description) { var row = $"{(printProject ? $"{project}," : null)}" + $"{(printIssueType ? $"{issueType}," : null)}" + $"{(printDescription ? $"{description}," : null)}"; return(row.Substring(0, row.Length - 1)); } if (printHeaders) { _console.Out.Write(Row(MappingConstants.FileHeaders.Project, MappingConstants.FileHeaders.IssueType, MappingConstants.FileHeaders.IssueTypeDescription)); _console.Out.Write(printIssueCount ? $",{MappingConstants.FileHeaders.IssueCount}," : ","); _console.Out.WriteLine(MappingConstants.FileHeaders.WorkItemType); } var issueTypes = exportedOnly ? GetIssueTypesFromExported(projectFilter) : GetIssueTypesFromMetadata(projectFilter); var rows = issueTypes .Select(s => Row(s.project, s.issueType, s.description)) .ToLookup(r => r) .OrderBy(r => r.Key); foreach (var row in rows) { _console.Out.Write(row.Key); _console.Out.WriteLine(printIssueCount ? $",{row.Count()}," : null); } }
private IEnumerable <(string project, string issueType, string description)> GetIssueTypesFromExported(ProjectFilter projectFilter) { return(_jiraContext.LocalJiraApi .GetIssueIds(projectFilter, out _) .Select(_migrationRepository.Get) .Where(m => m != null) .Select(m => (m.IssueId.Project, m.IssueType, "description not available in exported view"))); }
private IEnumerable <(string project, string issueType, string description)> GetIssueTypesFromMetadata(ProjectFilter projectFilter) { var projects = _jiraContext.Api.GetProjects().Result .ToObject <List <Project> >() .Where(p => projectFilter.IncludesProject(p.Key)); foreach (var project in projects) { foreach (var type in project.IssueTypes) { yield return(project.Key, type.Name, type.Description); } } }