bin/update_index.py (view raw)
1#!/usr/bin/env python3
2
3from markdown2 import markdown_path
4import os
5import fileinput
6import sys
7
8# change our cwd
9os.chdir('bin')
10
11blog = '../pages/blog/'
12
13# bunch of file hacks to get to the most recent file
14def getrecent(path):
15 files = [path + f for f in os.listdir(blog)
16 if f not in ['_index.md', 'feed.xml']]
17 files.sort(key=os.path.getmtime, reverse=True)
18 return files[0]
19
20
21def update_index(s):
22 path = '../pages/_index.md'
23 with open(path, 'r') as f:
24 md = f.readlines()
25 latest = md.index('# latest post\n')
26 md[latest + 2] = s + '\n'
27
28 with open(path, 'w') as f:
29 f.writelines(md)
30
31
32def update_blog(s):
33 path = '../pages/blog/_index.md'
34 s = s + '\n\n'
35 for l in fileinput.FileInput(path, inplace=1):
36 if "marker" in l:
37 l=l.replace(l, l + s)
38 print(l, end=''),
39
40# fetch title and date
41meta = markdown_path(getrecent(blog), extras=['metadata']).metadata
42fname = os.path.basename(os.path.splitext(getrecent(blog))[0])
43url = '/blog/' + fname
44line = f"`{meta['date']}` [{meta['title']}]({url})"
45
46update_index(line)
47update_blog(line)
48
49