THEAARBS tools - publish

Raw

#!/bin/bash
# Bound to Mod+Shift+Backspace
# Publish a Hugo site to a remote server
# User-defined variables are set in
# ~/.config/hugosites.conf file

Say() {
    echo "$1" "$2"
    notify-send "$1" "$2"
    echo "$1" "$2" >> $LogFile ;}

ConfigFile="/home/$USER/.config/hugosites.conf"
ConfigFiletmp='/tmp/hugosites.conf'
if egrep -q -v '^#|^[^ ]*=[^;]*' "$ConfigFile"
then
    Say "🗞️ Config file is unclean, cleaning it..."
    egrep '^#|^[^ ]*=[^;&]*'  "$ConfigFile" > "$ConfigFiletmp"
    cp "$ConfigFiletmp" "$ConfigFile"
fi
source "$ConfigFile"

case $(tty) in
    *tty*)   mymenu="dwmenu"
        runprefix="$TERMINAL -e" ;;
    *)   runprefix=
        mymenu="slmenu -l 8 -i -p" ;;
esac

mkdir -p $PathToLogs/push
LogFile="$PathToLogs/push/$(date +%b%d)/$(date +%H%M).$Chosen.log"
Choices="theatomheart.net\n$SiteName1\n$SiteName2\n$SiteName3\nConfigure"

# # --- Functions
ClearExit() { clear && exit ;}
Configure() { $runprefix $EDITOR ~/.config/hugosites.conf && ClearExit ;}
GetConfirmation() {
    clear
    Confirm=$(echo -e "Yes\nNo" | $mymenu "Publish $Chosen?") || ClearExit
    [[ $Confirm = "No" ]] && ClearExit
    clear ;}
CompileSite() {
    Say "🗞️ Compiling website." &&
    rm -rf $PathToHugo/$Chosen/public/ &&
    date >> $LogFile &&
    cd $PathToHugo/$Chosen &&
    hugo >> $LogFile ;}
MountServer() {
    sshfs $Username@$ServerHost:../../var/www/$Chosen $PathToHugo/.push/$Chosen &&
    Say "🔗 Connected to $ServerHost." ;}
SyncFiles() {
    Say "🗞️ Publishing web data."
    rsync -rtpvus --progress --delete $PathToHugo/$Chosen/public/ $PathToHugo/.push/$Chosen >> $LogFile ;}
Chosen=$(echo -e "$Choices" | $mymenu "Publish site:") || ClearExit
if [ $Chosen = "theatomheart.net" ] ; then ~/Projects/theatomheart.sh
elif [ $Chosen = "Configure" ] ; then Configure
else
    mkdir -p $PathToLogs/push/$(date +%b%d)/
    GetConfirmation &&
    CompileSite || Say "⛔ There was a problem compiling $Chosen"
    MountServer || Say "⛔ There was a problem connecting to $ServerHost."
    SyncFiles || Say "⛔ There was a problem pushing files to $ServerHost."
    fusermount -u $PathToHugo/.push/$Chosen
    rm -rf $PathToHugo/$Chosen/public/
    clear
    Say "👍️ Finished publishing $Chosen." &&
    mpv $HOME/.local/bin/notify.mp3 &>/dev/null
fi

categories · links · piano · posts · scripts · THEAARBS · home