Example #1
0
    def __new__(
        cls,
        category_id: str,
        target_group_id: str,
        text: str,
        reference_type: ReferenceType,
        reference_id: str,
        user_login: str,
        source_repo: str,
        cn_current_repo: ComponentName,
    ):
        if reference_id:
            check_type(reference_id, str)

        reference = Reference(type=reference_type, identifier=reference_id)

        cn_source_repo = ComponentName(name=source_repo)
        is_current_repo = cn_current_repo == cn_source_repo
        from_same_github_instance = cn_current_repo.github_host() == cn_source_repo.github_host()
        self = super().__new__(
            cls,
            category_id,
            target_group_id,
            text,
            reference,
            user_login,
            is_current_repo,
            from_same_github_instance,
            cn_source_repo
        )
        return self
Example #2
0
def release_note_block(code_block: dict,
                       reference_type: ReferenceType,
                       user_login: str,
                       cn_current_repo: ComponentName,
                       reference_id: str = None) -> ReleaseNoteBlock:
    text = _.trim(code_block.get('text'))
    if not text or 'none' == text.lower():
        return None

    category = code_block.get('category')
    target_group = code_block.get('target_group')
    source_repo = code_block.get('source_repo')
    if source_repo:
        reference_type = reference_type_for_type_identifier(
            code_block.get('reference_type'))
        reference_id = code_block.get('reference_id')
        user_login = code_block.get('user')
    else:
        source_repo = cn_current_repo.name()
        reference_type = reference_type
        reference_id = reference_id

    return ReleaseNoteBlock(category_id=category,
                            target_group_id=target_group,
                            text=text,
                            reference_type=reference_type,
                            reference_id=reference_id,
                            user_login=user_login,
                            source_repo=source_repo,
                            cn_current_repo=cn_current_repo)
Example #3
0
def _rls_note_objs(github_helper: GitHubRepositoryHelper,
                   git_helper: GitHelper,
                   repository_branch: str = None,
                   commit_range: str = None) -> [ReleaseNote]:
    cn_current_repo = ComponentName.from_github_repo_url(
        github_helper.repository.html_url)

    if not commit_range:
        commit_range = calculate_range(repository_branch, git_helper,
                                       github_helper)
    info('Fetching release notes from revision range: {range}'.format(
        range=commit_range))
    commits = commits_in_range(git_helper.repo, commit_range,
                               repository_branch)
    pr_numbers = fetch_pr_numbers_from_commits(commits)
    verbose(
        'Merged pull request numbers in range {range}: {pr_numbers}'.format(
            range=commit_range, pr_numbers=pr_numbers))
    release_note_objs = fetch_release_notes_from_prs(github_helper, pr_numbers,
                                                     cn_current_repo)
    release_note_objs.extend(
        fetch_release_notes_from_commits(commits, cn_current_repo))

    return release_note_objs
Example #4
0
    ReleaseNote,
    extract_release_notes,
)
from github.release_notes.model import (
    ReleaseNoteBlock,
    ReferenceType,
    REF_TYPE_PULL_REQUEST,
)
from github.release_notes.renderer import (
    CATEGORY_IMPROVEMENT_ID,
    TARGET_GROUP_USER_ID,
)
from product.model import ComponentName

CURRENT_REPO_NAME = 'github.com/madeup/current-repo'
CURRENT_REPO = ComponentName(CURRENT_REPO_NAME)

DEFAULT_CATEGORY = CATEGORY_IMPROVEMENT_ID
DEFAULT_TARGET_GROUP = TARGET_GROUP_USER_ID
DEFAULT_RELEASE_NOTE_TEXT = 'default release note text'
DEFAULT_USER = '******'
DEFAULT_REFERENCE_ID = '42'
DEFAULT_REFERENCE_TYPE = REF_TYPE_PULL_REQUEST
DEFAULT_REPO = CURRENT_REPO


def release_note_block_with_defaults(
    category_id: str = DEFAULT_CATEGORY,
    target_group_id: str = DEFAULT_TARGET_GROUP,
    text: str = DEFAULT_RELEASE_NOTE_TEXT,
    reference_type: ReferenceType = DEFAULT_REFERENCE_TYPE,