Skip to content

Instantly share code, notes, and snippets.

@n8henrie
Last active March 14, 2017 17:54
Show Gist options
  • Save n8henrie/723de47efe20921bec620d019631c516 to your computer and use it in GitHub Desktop.
Save n8henrie/723de47efe20921bec620d019631c516 to your computer and use it in GitHub Desktop.
Create a new draft for n8henrie.com
"""newpost.py :: Create a new draft for n8henrie.com
Args:
--drafts-dir: Path to drafts directory
"""
import datetime
import argparse
__version__ = 'v0.1.0'
template = """---
title: "{title}"
date: {date}
author: n8henrie
layout: post
excert: "{excerpt}"
# ggrep -oP '(?<=>Posts tagged with ).*?(?=<)' _site/tags/index.html
tags:
-
categories:
- tech
---
**Bottom line:** {excerpt}<!--more-->
""".format
def cli() -> dict:
parser = argparse.ArgumentParser()
parser.add_argument("-d", "--drafts-dir", default="_posts/",
help="Destination for draft")
parser.add_argument("--version", action="version", version=__version__)
args = parser.parse_args()
return vars(args)
def main(drafts_dir: str) -> None:
values = {}
now = datetime.datetime.now()
values['date'] = now.isoformat()
values['title'] = input("Post title: ")
values['excerpt'] = input("Post excerpt: ")
title_clean = ''.join(
c
for word in '-'.join(values['title'].lower().split())
for c in word
if c.isalnum() or c in ("'", "-")
)
filename = f"{drafts_dir}/{now:%Y-%m-%d}-{title_clean}.md"
with open(filename, 'w') as f:
f.write(template(**values))
print(f"Post started at {filename}")
if __name__ == "__main__":
main(**cli())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment