Example #1
0
def comments(
    id: str,
    workspace: str = get_workspace(),
    slug: str = get_slug(),
):
    """View comments for PR by ID"""
    url = comments_url.format(workspace=workspace, slug=slug, id=id)
    console = Console()
    with console.status("[bold green]Loading..."):
        resp = get(url)
        handle_error(resp)

    for comment in resp["values"]:
        user = comment["user"]["display_name"]
        updated = parse_dt(comment["updated_on"])
        path = comment["inline"]["path"]
        # _from = comment["inline"]["from"] or ""
        to = comment["inline"]["to"] or ""
        line = f":{to}" if to else ""
        deleted = "(Deleted)" if comment["deleted"] else ""
        console.print(
            f"[bold]{user}[/bold] {path}{line} [dim]{updated}[/dim] {deleted}"
        )
        markdown = comment["content"]["raw"]
        console.print(Padding(Markdown(markdown, code_theme=config.THEME), 1))
Example #2
0
def create(
    reviewers: List[str] = [],
    workspace: str = get_workspace(),
    slug: str = get_slug(),
    title: str = get_last_commit_msg(),
    src_branch: str = get_current_branch(),
    dst_branch: str = None,
    body: str = None,
    close: bool = True,
):
    """Create new PR"""
    data = {
        "title": title,
        "source": {"branch": {"name": src_branch}},
        "close_source_branch": close,
    }
    if dst_branch:
        data["destination"] = {"branch": {"name": dst_branch}}
    if reviewers:
        data["reviewers"] = [{"uuid": r} for r in reviewers]
    if body:
        data["description"] = body

    console = Console()
    with console.status("[bold green]Loading..."):
        run_cmd(["git", "push", "origin", src_branch])
        resp = post(prs_url.format(workspace=workspace, slug=slug), data)
        handle_error(resp)

        table = generate_prs_table([resp])
    console.print(table)
    print(resp["links"]["html"]["href"])
Example #3
0
def request_changes(
    id: str,
    workspace: str = get_workspace(),
    slug: str = get_slug(),
):
    """Request changes for PR by ID"""
    url = request_changes_url.format(workspace=workspace, slug=slug, id=id)
    console = Console()
    with console.status("[bold green]Loading..."):
        resp = post(url)
    handle_error(resp)
    print(resp["state"].title())
Example #4
0
def decline(
    id: str,
    workspace: str = get_workspace(),
    slug: str = get_slug(),
):
    """Decline PR by ID"""
    url = decline_url.format(workspace=workspace, slug=slug, id=id)
    console = Console()
    with console.status("[bold green]Loading..."):
        resp = post(url)
    handle_error(resp)
    print(resp["state"].title())
Example #5
0
def merge(
    id: str,
    workspace: str = get_workspace(),
    slug: str = get_slug(),
    delete_branch: bool = True,
):
    """Merge PR by ID"""
    url = merge_url.format(workspace=workspace, slug=slug, id=id)
    resp = post(url)
    handle_error(resp)
    print(resp["state"].title())
    if delete_branch:
        dst_branch = resp["destination"]["branch"]["name"]
        run_cmd(["git", "checkout", dst_branch])
        src_branch = resp["source"]["branch"]["name"]
        run_cmd(["git", "branch", "-D", src_branch])
Example #6
0
def commits(
    id: str,
    workspace: str = get_workspace(),
    slug: str = get_slug(),
):
    """View commits of PR by ID"""
    url = commits_url.format(workspace=workspace, slug=slug, id=id)
    console = Console()
    with console.status("[bold green]Loading..."):
        resp = get(url)
        handle_error(resp)

    for commit in resp["values"]:
        hash = commit["hash"]
        author = commit["author"]["raw"]
        date = commit["date"]
        message = commit["message"]

        console.print(f"[bold]commit {hash}[/bold]")
        console.print(f"[cyan]Author: {author}")
        console.print(f"[cyan]Date: {date}")
        console.print(Padding(message.strip(), (1, 4)))