From ad2f6f72c8c048ecc568d0ce147c14918bd47758 Mon Sep 17 00:00:00 2001 From: Luca Beltrame Date: Sat, 2 Jan 2021 16:03:16 +0100 Subject: [PATCH] New draft wrapper to write posts --- dennogumi_new_post.py | 55 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100755 dennogumi_new_post.py diff --git a/dennogumi_new_post.py b/dennogumi_new_post.py new file mode 100755 index 0000000..c9db343 --- /dev/null +++ b/dennogumi_new_post.py @@ -0,0 +1,55 @@ +#!/usr/bin/env python3 +# SPDX-FileCopyrightText: 2021 Luca Beltrame +# SPDX-License-Identifier: BSD-3-Clause + +import argparse +from datetime import datetime +from pathlib import Path +from typing import List + +import frontmatter +import sarge +from slugify import slugify + +POST_PATH = "content/post" + + +def new_post_title(title: str) -> str: + suffix = "md" + current_date = datetime.now().date().isoformat() + slugified_title = slugify(title) + post_title = f"{current_date}-{slugified_title}.{suffix}" + + return post_title + + +def create_post(post_title: str, tags: List[str] = None, + categories: List[str] = None) -> bool: + cmd = ["hugo", "new", "-k", "post"] + title = new_post_title(post_title) + path = Path(POST_PATH) / title + cmd.append(str(path)) + + pid = sarge.run(cmd) + if pid.returncode != 0: + return False + + header = frontmatter.load(path) + + if categories is not None: + header["categories"] = categories + if tags is not None: + header["tags"] = tags + + with path.open("w") as handle: + frontmatter.dump(header, handle) + + return True + + +def main(): + pass + + +if __name__ == "__main__": + main()