diff --git a/bchauvet/generate_roadmap_doc.py b/bchauvet/generate_roadmap_doc.py new file mode 100644 index 0000000..a0ba45f --- /dev/null +++ b/bchauvet/generate_roadmap_doc.py @@ -0,0 +1,89 @@ +import gitlab +from datetime import datetime + +YEAR = 2023 +BOARD_URL = "https://gitlab-staging.swh.network/groups/swh/-/milestones?sort=name_asc" +ROADMAP_PREFIX = "[Roadmap - $GOAL] " +SWH_GROUP = 25 + + +def write_header(output): + + output.write(".. _roadmap-current:\n") + output.write(f".. _roadmap-{YEAR}:\n") + output.write("\n") + output.write(f"Roadmap {YEAR}\n") + output.write("============\n") + output.write("\n") + output.write( + f"(Version 1.0, last modified {datetime.now().strftime('%Y-%m-%d')})\n" + ) + output.write("\n") + output.write( + "This document provides an overview of the technical roadmap of the Software\n" + ) + output.write(f"Heritage initiative for the year {YEAR}.\n") + output.write("\n") + output.write( + "Live tracking of the roadmap implementation progress during the year is\n" + ) + output.write("available from a dedicated `GitLab board\n") + output.write(f"<{BOARD_URL}>`_.\n") + output.write("\n") + output.write(".. contents::\n") + output.write(":depth: 3\n") + output.write("..\n") + + +def write_milestones(output): + gl = gitlab.Gitlab.from_config("staging", ["./python-gitlab.cfg"]) + gl.auth() + swh_group = gl.groups.get(SWH_GROUP) + + _milestones = swh_group.milestones.list(get_all=True) + + goals = [ + "Collect", + "Preserve", + "Share", + "Documentation", + "Technical Debt", + "Tooling and Infrastructure", + ] + + milestones = [[]] * len(goals) + + # group milestones by Goal + for i in range(len(goals)): + goal = goals[i] + prefix = ROADMAP_PREFIX.replace("$GOAL", goal).lower() + for milestone in _milestones: + if milestone.title.lower().startswith(prefix): + milestone.title = milestone.title[len(prefix) :] + milestones[i].append(milestone) + + # display goals & milestones + for i in range(len(goals)): + goal = goals[i] + output.write("\n") + output.write(f"{goal}\n") + output.write("-" * len(goal) + "\n") + output.write("\n") + for milestone in milestones[i]: + output.write("\n") + output.write(f"{milestone.title}\n") + output.write("^" * len(milestone.title) + "\n") + output.write("\n") + + output.write(f"- `Milestone: <{milestone.web_url}>`__\n") + output.write(f"{milestone.description}\n") + output.write("\n") + + +output = open(f"docs/roadmap-{YEAR}.rst", "w") + +write_header(output) +write_milestones(output) + + +output.close()