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