27 December 19
So there are a few updates to my blog system. As the number of blog posts have increased, I have realised that my current system is highly inefficient. Every time I make any changes to style.css I have to make sure the same changes are in all the subdirectories. Then I need to run the make
command in each subdirectory. A lot of work. So I removed the style.css and makefile files from each subdirectory, put the main style.css in the parent directory and wrote a shellscript to do the labour called sync. And here are the contents:
#!/bin/zsh
rm index.md
echo "---" >> index.md
echo "title: Philip's Blog" >> index.md
echo "---" >> index.md
echo >> index.md
echo "## Home" >> index.md
for i in */; do
cd $i
echo >> ../index.md
echo "[$(grep -m 1 'title:' index.md | sed -n 's/title: //p')](${i%?}/)" >> ../index.md
pandoc -sc ../style.css index.md -o
cd ..
done
pandoc -sc style.css index.md -o
The meat of the code is in the for loop. It loops over all of the subdirectories and greps out the title of the blog post. Then we pipe that into sed to format into the link formatting that markdown uses. That is put into the index.md file in the parent directory which is the markdown file that produces the homepage. Not only does the for loop achieve that, it also uses pandoc to produce the required .html file. So now there is no need for the makefile. This “Code” is not exactly the most efficient piece I have written. But it achieves the following:
And all I have to run in the terminal is ./sync
.