add justfile

Amolith created

Change summary

justfile | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 70 insertions(+)

Detailed changes

justfile 🔗

@@ -0,0 +1,70 @@
+# Build everything then deploy
+default: site (docs "pdf") (docs "epub") (docs "txt") images deploy
+
+# Deploy website
+deploy:
+    # Deploying website ...
+    rsync -qavmzz public/ hel1:/var/www/secluded/
+    # Website deployed
+
+# Build website
+site:
+    # Building website ...
+    hugo --quiet
+
+# Build documents of filetype ext
+docs ext:
+    #!/usr/bin/env bash
+
+    echo -e '\033[1m# Checking whether there are new {{uppercase(ext)}}s to build ...\033[0m'
+
+    export WEBROOT=public
+
+    published=$(grep -ilr --include \*.md "draft: false" content/posts)
+
+    todo=""
+
+    # Iterate through all non-drafts
+    for path in $published
+    do
+        filename=$(basename "$path")
+        name=$(echo "${filename%.*}")
+        # Check whether target doc is newer than Markdown file
+        if [ "$path" -nt "public/$name/$name.{{ext}}" ]
+        then
+            todo+="$path "
+        fi
+    done
+
+    if [ -z "$todo" ]
+    then
+        echo "No {{uppercase(ext)}}s to build"
+        exit 0
+    else
+        for path in $todo
+        do
+            filename=$(basename "$path")
+            name=$(echo "${filename%.*}")
+            echo "Generating $name.{{ext}}"
+
+            if [ "{{ext}}" == "pdf" ]
+            then
+                pandoc --quiet -f markdown -t pdf --lua-filter=pandoc_config/images.lua --pdf-engine=xelatex -V 'linkcolor:blue' --listings -H pandoc_config/styles.tex $path -o public/$name/$name.pdf
+            elif [ "{{ext}}" == "epub" ]
+            then
+                pandoc --quiet -f markdown -t epub3 --lua-filter=pandoc_config/images.lua --pdf-engine=xelatex -V 'linkcolor:blue' --listings -H pandoc_config/styles.tex $path -o public/$name/$name.epub
+            elif [ "{{ext}}" == "txt" ]
+            then
+                pandoc --quiet -f markdown -t plain --lua-filter=pandoc_config/images.lua $path -o public/$name/$name.txt
+            fi
+        done
+    fi
+
+# Generate cover images
+images:
+    # Generating cover images ...
+    # TODO: Generate covers for posts that have changed or that have no cover
+
+# Run development server
+serve:
+    hugo server -D