1
0
mirror of https://codeberg.org/fediverse/fep.git synced 2026-08-05 11:46:04 +00:00
Files
fep/scripts/create_issue.py
T
silverpill e928041c43 FEP-a4ed: Introduce trackingIssue metadata field (#284)
This is the first PR for issue https://codeberg.org/fediverse/fep/issues/185
Once this change is approved and merged, I will add `trackingIssue` to all existing proposals. After that `discussionsTo` can be used for solving https://codeberg.org/fediverse/fep/issues/274.

Reviewed-on: https://codeberg.org/fediverse/fep/pulls/284
Reviewed-by: Arnold Schrijver <circlebuilder@noreply.codeberg.org>
2024-05-17 19:33:25 +00:00

65 lines
1.9 KiB
Python

from argparse import ArgumentParser
from datetime import date, timedelta
from tools import FepFile
import json
from urllib.request import Request, urlopen
DRAFT_FEP_LABEL = 149758
parser = ArgumentParser("Create tracking issue for FEP")
parser.add_argument("fep", help="slug of the FEP")
args = parser.parse_args()
fep_file = FepFile(args.fep)
if "trackingIssue" in fep_file.parsed_frontmatter:
print("File already has trackingIssue")
exit(1)
if "discussionsTo" in fep_file.parsed_frontmatter:
print("File already has discussionsTo")
exit(1)
title = f"[TRACKING] FEP-{args.fep}: {fep_file.title}"
date_received = date.fromisoformat(fep_file.parsed_frontmatter["dateReceived"])
date1 = date_received.isoformat()
date2 = (date_received + timedelta(days=365)).isoformat()
body = f"""
The [proposal](https://codeberg.org/fediverse/fep/src/branch/main/{fep_file.filename}) has been received. Thank you!
This issue tracks discussions and updates to the proposal during the `DRAFT` period.
Please post links to relevant discussions as comment to this issue.
`dateReceived`: {date1}
If no further actions are taken, the proposal may be set by the facilitators to `WITHDRAWN` on {date2} (in 1 year).
"""
with open("scripts/config.json") as f:
config = json.load(f)
request = Request(
f"https://codeberg.org/api/v1/repos/{config['owner']}/{config['repo']}/issues"
)
request.add_header("Content-Type", "application/json; charset=utf-8")
request_body = json.dumps(
{"title": title, "body": body, "labels": [DRAFT_FEP_LABEL]}
).encode("utf-8")
request.add_header("authorization", f"Bearer {config['token']}")
request.add_header("Content-Length", len(request_body))
request.data = request_body
response = urlopen(request)
issue_url = json.loads(response.read())["html_url"]
fep_file.frontmetter.append(f"trackingIssue: {issue_url}")
fep_file.frontmatter.append(f"discussionsTo: {issue_url}")
fep_file.write()
print(f"Issue url: {issue_url}")