ollie/tools/memory_remember

60 lines
1.3 KiB
Python
Executable File

#!/usr/bin/env python3
# description: Save a memory as a denote-formatted flat file
# Args: <title> <tags_csv> <body>
import sys
import os
import re
from datetime import datetime
if len(sys.argv) < 4:
print("usage: memory_remember <title> <tags_csv> <body>")
sys.exit(1)
title = sys.argv[1]
tags_csv = sys.argv[2]
body = sys.argv[3]
mem_dir = os.environ.get("OLLIE_MEMORY_PATH", os.path.expanduser("~/.config/ollie/memory"))
if not os.path.isdir(mem_dir):
os.makedirs(mem_dir, exist_ok=True)
now = datetime.now()
ident = now.strftime("%Y%m%dT%H%M%S")
date = now.strftime("%Y-%m-%d %a %H:%M")
tags = [t.strip() for t in tags_csv.split(",") if t.strip()]
def slugify(s):
s = s.lower()
s = re.sub(r"[^a-z0-9]+", "-", s)
return s.strip("-")
slug = slugify(title)
tag_slug = "-".join(slugify(t) for t in tags)
filename = f"{ident}__{slug}--{tag_slug}.md" if tag_slug else f"{ident}__{slug}.md"
path = os.path.join(mem_dir, filename)
tags_yaml = "[" + ", ".join(f'"{t}"' for t in tags) + "]"
content = f"""---
title: {title}
date: {date}
tags: {tags_yaml}
identifier: {ident}
signature:
---
{body}
"""
try:
with open(path, "w") as f:
f.write(content)
except OSError as e:
print(f"error: failed to write {path}: {e}")
sys.exit(1)
print(f"saved: {filename}")