revuo-weekly/new_issue.py
Kumi e231c4d8c5
refactor: improve code readability and formatting
Unified string quotes and used consistent indentation to enhance the readability of the script. Refactored the creation of issue cover image for better clarity and maintainability. These changes optimize future code reviews and reduce the potential for errors.
2024-07-23 08:56:14 +02:00

65 lines
1.8 KiB
Python
Executable file

#!/usr/bin/env python3
import subprocess
import pathlib
import argparse
import datetime
import tempfile
import tomllib
def create_issue(issue_number):
subprocess.run(["hugo", "new", f"weekly/issue-{issue_number}/_index.md"])
def create_issue_image(site_title, issue_number, period_start, period_end):
with open("assets/img/cover-template.svg") as f:
cover_template = f.read()
cover_template = cover_template.replace("__SITE__", site_title)
cover_template = cover_template.replace("__ISSUE__", issue_number)
cover_template = cover_template.replace(
"__DATE__", f"{period_start} - {period_end}"
)
with tempfile.TemporaryDirectory() as tempdir:
cover_path = pathlib.Path(tempdir) / "cover.svg"
with open(cover_path, "w") as f:
f.write(cover_template)
subprocess.run(
[
"inkscape",
str(cover_path),
"-e",
f"content/weekly/issue-{issue_number}/cover.png",
]
)
def get_latest_issue():
issues = list(pathlib.Path("content/weekly").iterdir())
latest_issue = max(issues, key=lambda x: int(x.name.split("-")[1]))
return latest_issue.name.split("-")[1]
if __name__ == "__main__":
with open("hugo.toml", "rb") as f:
hugo_config = tomllib.load(f)
parser = argparse.ArgumentParser(description="Create a new issue")
parser.add_argument("--issue", type=int, help="Issue number")
args = parser.parse_args()
if args.issue:
new_issue = args.issue
else:
latest_issue = get_latest_issue()
new_issue = int(latest_issue) + 1
period_start = datetime.datetime.now().strftime("%Y-%m-%d")
period_end = (datetime.datetime.now() + datetime.timedelta(days=7)).strftime(
"%Y-%m-%d"
)
create_issue(new_issue)