diff --git a/justfile b/justfile new file mode 100644 index 0000000..c66b50f --- /dev/null +++ b/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