From 4365b322b9a613afaf1ff863058ba692e99e6122 Mon Sep 17 00:00:00 2001 From: Akshay Date: Sat, 23 Nov 2019 14:01:05 +0530 Subject: post added --- docs/index.html | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) (limited to 'docs/index.html') diff --git a/docs/index.html b/docs/index.html index c27cc06..f0282e1 100644 --- a/docs/index.html +++ b/docs/index.html @@ -21,6 +21,64 @@
+
+ +
23/11 2019
+ Static Sites With Bash +
+
+

After going through a bunch of static site generators +(pelican, +hugo, +vite), I decided to roll +my own. If you are more of the ‘show me the code’ kinda guy, +here you go.

+ +

Text formatting: I chose to write in markdown, and convert +to html with lowdown.

+ +

Directory structure: I host my site on GitHub pages, so +docs/ has to be the entry point. Markdown formatted posts +go into posts/, get converted into html, and end up in +docs/index.html, something like this:

+ +
posts=$(ls -t ./posts)     # chronological order!
+for f in $posts; do
+    file="./posts/"$f      # `ls` mangled our file paths
+    echo "generating post $file"
+
+    html=$(lowdown "$file")
+    echo -e "html" >> docs/index.html
+done
+
+ +

Assets: Most static site generators recommend dropping image +assets into the site source itself. That does have it’s +merits, but I prefer hosting images separately:

+ +
# strip file extension
+ext="${1##*.}"
+
+# generate a random file name
+id=$( cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 2 | head -n 1 )
+id="$id.$ext"
+
+# copy to my file host
+scp -P 443 "$1" emerald:files/"$id" 
+echo "https://files.nerdypepper.tech/$id"
+
+ +

Templating: +generate.sh +brings the above bits and pieces together (with some extra +cruft to avoid javascript). It uses sed to produce nice +titles from the file names (removes underscores, +title-case), and date(1) to add the date to each post +listing!

+
+
+
+
07/11 2019
-- cgit v1.2.3