# Build everything then deploy
# default: site (docs "pdf") (docs "epub") (docs "txt") images deploy
default: site 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 generate ...\033[0m'
#
#    export WEBROOT=public
#
#    published=$(grep -ilr --include \*.md "draft: false" content)
#
#    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 generate"
#        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:
    #!/usr/bin/env bash

    echo -e '\033[1m# Checking whether there are cover images to generate ...\033[0m'

    published=$(grep -ilr --include \*.md "draft: false" content)

    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/cover.png" ]
        then
            todo+="$path "
        fi
    done

    if [ "content/_index.md" -nt "public/cover.png" ]
    then
        p2c -o public/cover.png -t "A Secluded Home" -s "Personal corner of the web for a musician, developer, sysadmin, podcaster, and small business owner"
    fi

    if [ -z "$todo" ]
    then
        echo "No covers to generate"
        exit 0
    else
        for path in $todo
        do
            filename=$(basename "$path")
            name=$(echo "${filename%.*}")
            echo "Generating cover for $name"

            p2c -i $path -o public/$name/cover.png
        done
    fi

# Generate feeds post from OPML file in /tmp/subscriptions.opml
opml:
    go install git.sr.ht/~amolith/opml2md@latest
    opml2md -i /tmp/subscriptions.opml -o content/feeds.md -x static/feeds.opml -t opml.tmpl -g "Software updates,Newsletters"

# Run development server
serve:
    hugo server

# Run development server
served:
    hugo server -D