srht-cli/output.py
2021-07-12 22:07:33 -07:00

93 lines
3 KiB
Python

import json
todo_url = "https://todo.sr.ht/"
git_url = "https://git.sr.ht/"
#print(json.dumps(events, indent=4))
def show_ticket(ticket):
assignees = []
for a in ticket['assignees']:
assignees.append(a['canonical_name'])
if ticket['submitter']['type'] == "user":
submitter = ticket['submitter']['canonical_name']
elif ticket['submitter']['type'] == "email":
submitter = ticket['submitter']['address']
else:
submitter = ticket['submitter']
print(f"[{ticket['ref']}]")
print()
print(f" status: {ticket['status']}")
print(f" resolution: {ticket['resolution']}")
print(f" submitter: {submitter}")
print(f" assigned: {assignees}")
print(f" created: {ticket['created']}")
print(f" updated: {ticket['updated']}")
print(f" labels: {ticket['labels']}")
print()
print(ticket['title'])
print()
print(ticket['description'])
def show_comments(events):
print()
for event in reversed(events):
if "comment" not in event['event_type']:
continue
comment = event['comment']
submitter = comment['submitter']['canonical_name']
old_res = event['old_resolution']
new_res = event['new_resolution']
old_status = event['old_status']
new_status = event['new_status']
print(f"{comment['id']} {submitter} @ {comment['created']}")
print(f"{old_status} -> {new_status}, {old_res} -> {new_res}")
print(f" {comment['text']}")
print()
def show_tickets(tickets, closed):
#print(json.dumps(tickets, indent=4))
for ticket in tickets:
#tr_name = ticket['tracker']['name']
#tr_owner = ticket['tracker']['owner']['canonical_name']
#ticket_url = todo_url + tr_owner + "/" + tr_name + "/" + str(ticket['id'])
if ticket['status'] == "resolved" and not closed:
continue
print(f"{ticket['id']}: {ticket['title']} ({ticket['status']})")
#print(ticket_url)
def show_trackers(trackers, verbose):
for tracker in trackers:
print(f"{tracker['id']} {tracker['name']}")
if verbose:
print(f"{todo_url}{tracker['owner']['canonical_name']}/{tracker['name']}")
print(f" {tracker['description']}")
print()
def show_labels(labels):
for label in labels:
print(f"{label['name']}")
def show_repos(repos, verbose):
for repo in repos:
print(f"{repo['id']} {repo['name']}")
if verbose:
print(f"{git_url}{repo['owner']['canonical_name']}/{repo['name']}")
print(f" {repo['description']}")
print()
def show_pastes(pastes):
for paste in pastes:
print(f"{paste['sha']} ({paste['visibility']}) {paste['created']}")
def show_paste(paste):
print(f"[{paste['sha']}]")
print()
print(f"visibility: {paste['visibility']}")
print(f" created: {paste['created']}")
print()
for blob in paste['blobs']:
print(f"[{blob['filename']}] {blob['id']}")
print(f"{blob['content']}")
print()