コード例 #1
0
    def write_requirements(self, root_dir='.', md_file_name=None, format='md'):
        if not md_file_name:
            if self._current_tag:
                md_file_name = os.path.join(root_dir, self._current_tag, 'REQUIREMENTS.md')
            else:
                dev_or_stable = "dev" if self._dev else "stable"
                raise NoAppropriateVersionFoundException("No suitable version for " + dev_or_stable + "release")

        os.makedirs(os.path.dirname(md_file_name), exist_ok=True)
        requirements_md = MdUtils(file_name=md_file_name, title="Requirements Summary")

        for req_topic in self._requirements:
            requirements_md.new_header(level=1, title=req_topic)
            for req in self._requirements[req_topic]:
                impacted = self._current_tag in self._requirements_tag_map[req['number']]['tags'] if req['number'] in self._requirements_tag_map else False
                impacted_icon = ':boom:' if impacted else ''
                title = f"{req['title']} ([#{req['number']}](https://github.com/{self._repo}/issues/{req['number']})) {impacted_icon}"
                requirements_md.new_header(level=2, title=title)
                if impacted:
                    issue_lines = {t : [] for t in Requirements.ISSUE_TYPES}
                    for n in self._requirements_tag_map[req['number']]['issues']:
                        issue = self._repo.issue(n)
                        bug_or_enhancement = Requirements._issue_is_bug_or_enhancement(issue)
                        issue_lines[bug_or_enhancement].append(f'{issue.title} ([#{n}](https://github.com/{self._repo}/issues/{n}))')

                    for issue_type, issue_list in issue_lines.items():
                        if len(issue_lines[issue_type]):
                            requirements_md.new_paragraph(f'The {issue_type}s which impact this requirements are:')
                            requirements_md.new_list(issue_list)

                else:
                    requirements_md.new_paragraph('This requirement is not impacted by the current version')

        requirements_md.create_md_file()
        if format == 'md':
            return md_file_name
        if format == 'html':
            html_file_name = md_file_name.replace('.md', '.html')
            return md_to_html(md_file_name, html_file_name,
                              {'name': self._repo, 'description': self._repo.description, 'tag': self._current_tag})
        else:
            logger.error(f'output format {format} is not supported')
            return ''

        self._clean_previous_dev_requirements(root_dir)
コード例 #2
0
    end_datetime = str2time(end_time)
    for target in target_list:
        if repo.find(target) != -1:
            if start_datetime <= cur_datetime <= end_datetime:
                if node['issue']['id'] not in comment_issue_ids:
                    comment_issue_ids.append(node['issue']['id'])
                    comment_issues.append(node)
                    break

mdFile = MdUtils(file_name='output', title='Weekly Report')

if len(open_issues) > 0:
    mdFile.new_header(level=2, title='Open Issues', add_table_of_contents='n')
    mdFile.new_list(
        map(
            lambda x: 'Open Issue ' + mdFile.new_inline_link(
                link=x['issue']['url'], text=x['issue']['title']),
            open_issues))

if len(open_prs) > 0:
    mdFile.new_header(level=2, title='Open PRs', add_table_of_contents='n')
    mdFile.new_list(
        map(
            lambda x: 'Open PR ' + mdFile.new_inline_link(
                link=x['pullRequest']['url'], text=x['pullRequest']['title']),
            open_prs))

if len(review_prs) > 0:
    mdFile.new_header(level=2, title='Review PRs', add_table_of_contents='n')
    mdFile.new_list(
        map(