From 5924e263893ac8c47a22a78c88b46c585fc9e82b Mon Sep 17 00:00:00 2001 From: Akshay Date: Sat, 25 Jan 2020 23:14:36 +0530 Subject: update styles, minify links --- docs/posts/static_sites_with_bash/index.html | 84 ++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 docs/posts/static_sites_with_bash/index.html (limited to 'docs/posts/static_sites_with_bash/index.html') diff --git a/docs/posts/static_sites_with_bash/index.html b/docs/posts/static_sites_with_bash/index.html new file mode 100644 index 0000000..0605147 --- /dev/null +++ b/docs/posts/static_sites_with_bash/index.html @@ -0,0 +1,84 @@ + + + + + + + + + + + + + +
+
+
+ 23/11 2019 + + + d1faa7e + + +
+ + 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!

+ +
+ ⟵ Back +
+
+
+ + -- cgit v1.2.3