Script

To make it easier for me to keep my website up to date with my personal vault, I needed to automate the publish process. Below is a script I can trigger from RayCast in order to quickly update my website with a simple trig[]()ger and confirmation key.

#!/bin/bash
 
# Remove Old Files
trash /Users/dom/Documents/GitHub/obsidian-site/quartz/content/*
trash /Users/dom/Documents/GitHub/obsidian-site/quartz/public/*
 
# Export my Obsidian Vault to the GitHub content folder
/Users/dom/Documents/GitHub/obsidian-site/obsidian-export/target/debug/obsidian-export --frontmatter=always ~/Library/Mobile\ Documents/iCloud~md~obsidian/Documents/Dom\'s\ 2nd\ Brain/ /Users/dom/Documents/GitHub/obsidian-site/quartz/content
 
# Compile Quartz Site
cd /Users/dom/Documents/GitHub/obsidian-site/quartz
npx quartz build
 
# Save today's date for the commit name
date=$(date '+%m-%d-%Y')
 
# Output current changed files
OUTPUT="$(git status)"
echo "${OUTPUT}"
 
# A helper function to ask for confirmation
asksure() {
	echo -n "Are you sure (Y/N)? "
	while read -r -n 1 -s answer; do
	  if [[ $answer = [YyNn] ]]; then
	    [[ $answer = [Yy] ]] && retval=0
	    [[ $answer = [Nn] ]] && retval=1
	    break
	  fi
	done
	
	echo # just a final linefeed, optics...
	
	return $retval
}
 
if asksure; then
	# Publish!
	git add .
	git commit -m "✨ [FEAT] $date Update"
	git push
	
	echo "Published! 🚀"
else
	echo "Aborting! ❌"
fi