diff --git a/justfile b/justfile index 88ab488..a1319a4 100644 --- a/justfile +++ b/justfile @@ -40,7 +40,8 @@ devserver-global: pelican -lr content -o output -s "{{CONFFILE}}" {{PELICANOPTS}} -b 0.0.0.0 # generate using production settings -publish: +publish number: + just format {{number}} pelican content -o output -s "{{PUBLISHCONF}}" {{PELICANOPTS}} rsync -e ssh -av --delete-after /Users/pascal/Documents/craft-letter/output/ craftletter@ssh-craftletter.alwaysdata.net:/home/craftletter/www @@ -53,8 +54,9 @@ new number: PYTHONPATH=PWD venv/bin/python ./scripts/create_newsletter.py --number={{number}} # generate HTML email -mail file: - PYTHONPATH=PWD venv/bin/python ./scripts/prepare_email.py {{file}} +mail number: + just format {{number}} + PYTHONPATH=PWD venv/bin/python ./scripts/prepare_email.py --number={{number}} # Format the content of a given newsletter format number: diff --git a/scripts/format.py b/scripts/format.py index d711e48..7a61f52 100644 --- a/scripts/format.py +++ b/scripts/format.py @@ -3,9 +3,9 @@ from pathlib import Path REPLACEMENTS = { " :": " :", - " ;": " :", - " !": " :", - " ?": " :", + " ;": " ;", + " !": " !:", + " ?": " ?", "'": "’", } @@ -15,9 +15,8 @@ args = parser.parse_args() file = Path(f"./content/newsletter/craft-letter-{args.number}.md") -with open(file) as f: - content = f.read() - for value, replacement in REPLACEMENTS.items(): - content = content.replace(value, replacement) +content = file.read_text() +for value, replacement in REPLACEMENTS.items(): + content = content.replace(value, replacement) file.write_text(content) diff --git a/scripts/prepare_email.py b/scripts/prepare_email.py index 903103d..81d03d4 100755 --- a/scripts/prepare_email.py +++ b/scripts/prepare_email.py @@ -1,6 +1,8 @@ #!python # Copies the given input file, removing the parts specific to the Web, # so it can be converted to an email +from datetime import date +from docutils.parsers.rst.directives.misc import Date import subprocess import argparse @@ -11,13 +13,10 @@ MAIL_GENERATOR = "/opt/homebrew/bin/mdtosendy" parser = argparse.ArgumentParser() -parser.add_argument("source") +parser.add_argument("-n", "--number", required=True, type=int, help="Newsletter number") args = parser.parse_args() -root = Path.cwd() -print(f"Root: {root}") - -source = Path(root / args.source) +source = Path(f"./content/newsletter/craft-letter-{args.number}.md") if not source.is_file(): print(f"ERROR: file not found {source}") @@ -34,4 +33,12 @@ destination = Path.cwd() / "mail" / source.name print(f"Writing {destination}") destination.write_text(output) -subprocess.run([MAIL_GENERATOR, "--preview", str(destination)]) +subprocess.run([MAIL_GENERATOR, str(destination)]) + +generated_mail = Path("mail") / f"craft-letter-{args.number}.html" +today = date.today() +mail_content = generated_mail.read_text() +mail_content = mail_content.replace("{{YEAR}}", str(today.year)) +generated_mail.write_text(mail_content) + +subprocess.run(["open", str(generated_mail)])