-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnewpost
executable file
·42 lines (33 loc) · 1.2 KB
/
newpost
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#!/usr/bin/python3
import sys
from datetime import datetime, timedelta, timezone
import re
def main(args):
if len(args) < 3:
print("usage: newpost <name> <title> <categories>")
print("title should be quoted")
print("categories should be quoted and separated by commas")
sys.exit(2)
name = get_name(args[0])
title = args[1]
cats = args[2]
now_ = datetime.now(timezone.utc)
tz_offset = timezone(timedelta(hours=3)) # NL
now = now_.astimezone(tz_offset)
if now.dst() != timedelta(0):
tz_offset = timezone(timedelta(hours=2)) # NL WITH DST
now = now_.astimezone(tz_offset)
short_dt = now.strftime("%Y-%m-%d")
full_dt = now.strftime("%Y-%m-%d %H:%M:%S %z")
with open("docs/_posts/" + short_dt + "-" + name + ".md", "w") as f:
f.write("---\n")
f.write("layout: post\n")
f.write("title: " + title + "\n")
f.write("date: " + full_dt + "\n")
f.write("categories: [" + cats + "]\n")
f.write("---\n\n")
def get_name(name):
cleaned_name = re.sub(r"\s+", "-", name)
return cleaned_name[:50] if len(cleaned_name) > 50 else cleaned_name
if __name__ == "__main__":
main(sys.argv[1:])