💾 Archived View for tilde.cafe › ~winter › cgi-bin › cat.sh › cgi-bin › dgmi.bash captured on 2022-07-16 at 21:28:47.

View Raw

More Information

-=-=-=-=-=-=-

#!/bin/bash

echo -e '20 text/gemini\r'

# check for shebang to determine whether to miss 1st line off
if head -n 1 $1 | grep -q '^#!'
then
    getter="tail -n +2 $1"
else
    getter="cat $1"
fi

mode=normal

while read line
do
    if [ $mode == exec ]
    then
        if [ "$line" == ":::" ]
        then
            # end exec block + execute
            mode=normal
            $executor $script
        else
            # write this line to the temp file
            echo "$line" >> $script
        fi
    elif [[ "^$line" =~ "^:::" ]]
    then
        # begin exec block
        mode=exec
        executor="$(sed -E 's/^:::(.+)$/\1/' <<< $line)"
        script="$(mktemp)"
    else
        # normal text
        echo "$line"
    fi
done <<< $($getter)