Add implementation for issue show
This commit is contained in:
parent
6594f515f3
commit
57afd1c82b
|
@ -2,7 +2,7 @@ import configparser
|
|||
import functools
|
||||
import os
|
||||
from pathlib import Path
|
||||
from textwrap import indent, shorten, wrap
|
||||
from textwrap import dedent, indent, shorten, wrap
|
||||
from typing import Any, Callable, Dict
|
||||
|
||||
import click
|
||||
|
@ -268,26 +268,34 @@ def link():
|
|||
pass
|
||||
|
||||
|
||||
def _format_links(client, issue):
|
||||
lines = []
|
||||
issuelinks = getattr(issue.fields, 'issuelinks', [])
|
||||
if issuelinks:
|
||||
lines.append("Issue Links")
|
||||
# TODO group by type?
|
||||
for issuelink in issuelinks:
|
||||
other_issue = getattr(issuelink, 'inwardIssue', getattr(issuelink, 'outwardIssue', None))
|
||||
summary = indent('\n'.join(wrap(other_issue.fields.summary, width=72)), prefix=' ' * 4)
|
||||
lines.append(f" {issuelink.type} - {other_issue.key}\n{summary}")
|
||||
|
||||
remote_links = client.remote_links(issue.id)
|
||||
if remote_links:
|
||||
if lines:
|
||||
lines.append('')
|
||||
lines.append("Remote Links:")
|
||||
for link in remote_links:
|
||||
# TODO tabulate?
|
||||
lines.append(f" {link.object.title} => {link.object.url}")
|
||||
|
||||
return '\n'.join(lines)
|
||||
|
||||
|
||||
@link.command('list')
|
||||
@pass_issue
|
||||
@pass_client
|
||||
def link_list(client, issue):
|
||||
|
||||
issuelinks = getattr(issue.fields, 'issuelinks', [])
|
||||
if issuelinks:
|
||||
print("\nIssue Links")
|
||||
# TODO group by type?
|
||||
for issuelink in issuelinks:
|
||||
other_issue = getattr(issuelink, 'inwardIssue', issuelink.outwardIssue)
|
||||
summary = indent('\n'.join(wrap(other_issue.fields.summary, width=72)), prefix=' ' * 4)
|
||||
print(f" {issuelink.type} - {other_issue.key}\n{summary}")
|
||||
|
||||
remote_links = client.remote_links(issue.id)
|
||||
if remote_links:
|
||||
print("\nRemote Links:")
|
||||
for link in remote_links:
|
||||
# TODO tabulate?
|
||||
print(f" {link.object.title} => {link.object.url}")
|
||||
print(_format_links(client, issue))
|
||||
|
||||
|
||||
def prompt(description: str, *, multiline_ok: bool = True, initial_content: str = '', empty_ok: bool = False) -> str:
|
||||
|
@ -396,11 +404,58 @@ def label_edit(issue):
|
|||
@pass_issue
|
||||
def debug(issue):
|
||||
import IPython
|
||||
IPython.embed
|
||||
IPython.embed()
|
||||
|
||||
|
||||
@issue.command()
|
||||
@pass_issue
|
||||
def show(issue):
|
||||
@pass_client
|
||||
def show(client, issue):
|
||||
"""Show a lot of information about the issue"""
|
||||
raise NotImplementedError
|
||||
print(f"{issue.key} on {issue.fields.status} as {issue.fields.issuetype} assigned to {issue.fields.assignee}")
|
||||
if getattr(issue.fields, 'parent', None):
|
||||
parent = issue.fields.parent
|
||||
print(f" parent: {parent.key} on {parent.fields.status} as {parent.fields.issuetype}")
|
||||
summary = indent('\n'.join(wrap(parent.fields.summary, width=72)), prefix=' ' * 4)
|
||||
print(f"{summary}")
|
||||
print(indent(dedent(f"""\
|
||||
created: {issue.fields.created}
|
||||
components: {', '.join(issue.fields.components)}
|
||||
flagged: {getattr(issue.fields, 'flagged', False)}
|
||||
labels: {', '.join(issue.fields.labels)}
|
||||
priority: {issue.fields.priority}
|
||||
reporter: {issue.fields.reporter}"""),
|
||||
' ' * 2))
|
||||
|
||||
def _header(s):
|
||||
# print(f"\n {s}\n {'+' * len(s)}")
|
||||
print(f"\n +++ {s} +++")
|
||||
|
||||
summary = indent('\n'.join(wrap(issue.fields.summary, replace_whitespace=False)), prefix=' ' * 2)
|
||||
_header('summary')
|
||||
print(summary)
|
||||
|
||||
description = indent('\n'.join(wrap(issue.fields.description or '', replace_whitespace=False)), prefix=' ' * 2)
|
||||
_header('description')
|
||||
print(description)
|
||||
|
||||
_header('attachments')
|
||||
for i, attachment in enumerate(issue.fields.attachment):
|
||||
print(f" * {attachment.filename} by {attachment.author}")
|
||||
print(f" {attachment.content}")
|
||||
print(f" {attachment.mimeType} with {attachment.size} B")
|
||||
|
||||
_header('links')
|
||||
links = _format_links(client, issue)
|
||||
if links:
|
||||
print(indent(links, prefix=' ' * 2))
|
||||
|
||||
_header('comments')
|
||||
for i, comment in enumerate(issue.fields.comment.comments):
|
||||
if i != 0:
|
||||
print('')
|
||||
print(f" {comment.created} - {comment.author}")
|
||||
body = indent('\n'.join(wrap(comment.body, replace_whitespace=False)), ' ' * 4)
|
||||
print(body)
|
||||
|
||||
print('')
|
||||
|
|
Loading…
Reference in New Issue