2023-07-16 07:43:02 +00:00
|
|
|
import glob
|
2023-10-23 14:35:30 +00:00
|
|
|
import hashlib
|
|
|
|
|
|
2023-10-27 13:42:33 +02:00
|
|
|
from .fep_file import FepFile
|
|
|
|
|
|
2023-10-23 14:35:30 +00:00
|
|
|
|
|
|
|
|
def title_to_slug(title):
|
|
|
|
|
return hashlib.sha256(title.encode("utf-8")).hexdigest()[:4]
|
2023-07-16 07:43:02 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_fep_ids():
|
|
|
|
|
for fep in glob.glob("fep/*"):
|
|
|
|
|
yield fep.removeprefix("fep/")
|
|
|
|
|
|
|
|
|
|
|
2023-10-27 13:42:33 +02:00
|
|
|
def build_url_link(url):
|
|
|
|
|
url_number = url.split("/")[-1]
|
|
|
|
|
return f"[#{url_number}]({url})"
|
2023-07-16 07:43:02 +00:00
|
|
|
|
|
|
|
|
|
2023-10-27 13:42:33 +02:00
|
|
|
class Readme:
|
2023-07-16 07:43:02 +00:00
|
|
|
@property
|
2023-10-27 13:42:33 +02:00
|
|
|
def content(self):
|
|
|
|
|
return self.frontmatter + self.table + self.backmatter
|
2023-07-16 07:43:02 +00:00
|
|
|
|
|
|
|
|
@property
|
2023-10-27 13:42:33 +02:00
|
|
|
def frontmatter(self):
|
|
|
|
|
with open("scripts/frontmatter.md") as f:
|
|
|
|
|
return f.readlines()
|
2023-07-16 07:43:02 +00:00
|
|
|
|
|
|
|
|
@property
|
2023-10-27 13:42:33 +02:00
|
|
|
def backmatter(self):
|
|
|
|
|
with open("scripts/backmatter.md") as f:
|
|
|
|
|
return f.readlines()
|
2023-07-16 07:43:02 +00:00
|
|
|
|
2023-10-27 13:42:33 +02:00
|
|
|
@property
|
|
|
|
|
def table(self):
|
|
|
|
|
fep_files = [FepFile(fep) for fep in get_fep_ids()]
|
|
|
|
|
fep_files = sorted(
|
2024-06-03 21:12:43 +00:00
|
|
|
fep_files,
|
|
|
|
|
key=lambda x: (x.parsed_frontmatter["dateReceived"], x.parsed_frontmatter["slug"]),
|
2023-10-27 13:42:33 +02:00
|
|
|
)
|
2023-07-16 07:43:02 +00:00
|
|
|
|
2023-10-27 13:42:33 +02:00
|
|
|
result = []
|
2023-07-16 07:43:02 +00:00
|
|
|
|
2023-10-27 13:42:33 +02:00
|
|
|
for fep in fep_files:
|
2024-01-19 20:22:52 +00:00
|
|
|
link = f"[FEP-{fep.fep}: {fep.title}](./{fep.filename})"
|
2023-10-27 13:42:33 +02:00
|
|
|
parsed = fep.parsed_frontmatter
|
|
|
|
|
|
2024-06-03 21:12:43 +00:00
|
|
|
tracking_issue = build_url_link(parsed["trackingIssue"])
|
2023-10-27 13:42:33 +02:00
|
|
|
|
|
|
|
|
if "dateFinalized" in parsed:
|
|
|
|
|
date_final = parsed["dateFinalized"]
|
|
|
|
|
elif "dateWithdrawn" in parsed:
|
|
|
|
|
date_final = parsed["dateWithdrawn"]
|
|
|
|
|
else:
|
|
|
|
|
date_final = "-"
|
|
|
|
|
result.append(
|
2024-06-03 21:12:43 +00:00
|
|
|
f"""| {link} | `{parsed["status"]}` | {tracking_issue} | {parsed["dateReceived"]} | {date_final} |\n"""
|
2023-10-27 13:42:33 +02:00
|
|
|
)
|
|
|
|
|
return result
|