mirror of
https://github.com/freedomofpress/dangerzone.git
synced 2025-05-05 21:21:49 +02:00

This commit makes changes to the release instructions, prefering bash exemples when that's possible. As a result, the QA.md and RELEASE.md files have been separated and a new `generate-release-tasks.py` script is making its apparition.
67 lines
1.8 KiB
Python
Executable file
67 lines
1.8 KiB
Python
Executable file
#!/usr/bin/env python3
|
|
import pathlib
|
|
import subprocess
|
|
|
|
RELEASE_FILE = "RELEASE.md"
|
|
QA_FILE = "QA.md"
|
|
|
|
|
|
def git_root():
|
|
"""Get the root directory of the Git repo."""
|
|
# FIXME: Use a Git Python binding for this.
|
|
# FIXME: Make this work if called outside the repo.
|
|
path = (
|
|
subprocess.run(
|
|
["git", "rev-parse", "--show-toplevel"],
|
|
check=True,
|
|
stdout=subprocess.PIPE,
|
|
)
|
|
.stdout.decode()
|
|
.strip("\n")
|
|
)
|
|
return pathlib.Path(path)
|
|
|
|
|
|
def extract_checkboxes(filename):
|
|
headers = []
|
|
result = []
|
|
|
|
with open(filename, "r") as f:
|
|
lines = f.readlines()
|
|
|
|
current_level = 0
|
|
for line in lines:
|
|
line = line.rstrip()
|
|
|
|
# If it's a header, store it
|
|
if line.startswith("#"):
|
|
# Count number of # to determine header level
|
|
level = len(line) - len(line.lstrip("#"))
|
|
if level < current_level or not current_level:
|
|
headers.extend(["", line, ""])
|
|
current_level = level
|
|
elif level > current_level:
|
|
continue
|
|
else:
|
|
headers = ["", line, ""]
|
|
|
|
# If it's a checkbox
|
|
elif "- [ ]" in line or "- [x]" in line or "- [X]" in line:
|
|
# Print the last header if we haven't already
|
|
if headers:
|
|
result.extend(headers)
|
|
headers = []
|
|
current_level = 0
|
|
|
|
# If this is the "Do the QA tasks" line, recursively get QA tasks
|
|
if "Do the QA tasks" in line:
|
|
result.append(line)
|
|
qa_tasks = extract_checkboxes(git_root() / QA_FILE)
|
|
result.append(qa_tasks)
|
|
else:
|
|
result.append(line)
|
|
return "\n".join(result)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
print(extract_checkboxes(git_root() / RELEASE_FILE))
|