The basic program is now working to create posts
This commit is contained in:
parent
864124f7d2
commit
c28dd21e62
1 changed files with 29 additions and 8 deletions
|
@ -8,6 +8,7 @@ from pathlib import Path
|
|||
from typing import List
|
||||
|
||||
import frontmatter
|
||||
from git import Repo
|
||||
import sarge
|
||||
from slugify import slugify
|
||||
|
||||
|
@ -23,16 +24,26 @@ def new_post_title(title: str) -> str:
|
|||
return post_title
|
||||
|
||||
|
||||
def commit_initial_post(post_title, post_filename):
|
||||
repo = Repo("./")
|
||||
repo.index.add([str(post_filename)])
|
||||
template = f"New post: {post_title}"
|
||||
repo.index.commit(template)
|
||||
|
||||
|
||||
def create_post(post_title: str, tags: List[str] = None,
|
||||
categories: List[str] = None, comments: bool = True) -> bool:
|
||||
cmd = ["hugo", "new", "-k", "post"]
|
||||
categories: List[str] = None,
|
||||
comments: bool = True,
|
||||
draft: bool = True) -> Path or None:
|
||||
cmd = ["hugo", "new", "-k", "posts"]
|
||||
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
|
||||
return
|
||||
|
||||
header = frontmatter.load(path)
|
||||
|
||||
|
@ -41,12 +52,15 @@ def create_post(post_title: str, tags: List[str] = None,
|
|||
if tags is not None:
|
||||
header["tags"] = tags
|
||||
|
||||
header["draft"] = draft
|
||||
header["comments"] = comments
|
||||
header["title"] = post_title
|
||||
|
||||
with path.open("w") as handle:
|
||||
frontmatter.dump(header, handle)
|
||||
frontmatter.dump(header, path)
|
||||
|
||||
return True
|
||||
print(f"{path} created.")
|
||||
|
||||
return path
|
||||
|
||||
|
||||
def main():
|
||||
|
@ -59,12 +73,19 @@ def main():
|
|||
parser.add_argument("--disable_comments", action="store_false",
|
||||
help="Disable comments for the post")
|
||||
parser.add_argument("--commit", action="store_true",
|
||||
help="Commit and push to the remote repository")
|
||||
help="Commit to the repository")
|
||||
parser.add_argument("--draft", action="store_true",
|
||||
help="Create the post as draft")
|
||||
parser.add_argument("title", help="Title of the new post")
|
||||
|
||||
pass
|
||||
options = parser.parse_args()
|
||||
|
||||
post_path = create_post(options.title, options.tags,
|
||||
options.categories,
|
||||
comments=options.disable_comments)
|
||||
|
||||
if post_path is not None and options.commit:
|
||||
commit_initial_post(options.title, post_path)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
|
Loading…
Add table
Reference in a new issue