justfiles for automating various tasks on my workstation
1# New blog entry 2[group('blogging')] 3newblog slug: 4 #!/usr/bin/env bash 5 BLOG_DIR="${HOME}/repos/tildegit.org/hyperreal/hyperreal.coffee/http" 6 FILENAME_DATE=$(date '+%Y-%m-%d') 7 POST_DATE=$(date '+%Y-%m-%d %H:%M:%S') 8 FILENAME="${FILENAME_DATE}-{{ slug }}.md" 9 cat <<EOF >"${BLOG_DIR}/content/posts/${FILENAME}" 10 +++ 11 title = '' 12 date = $POST_DATE 13 tags = [] 14 +++ 15 16 EOF 17 nvim "${BLOG_DIR}/content/posts/${FILENAME}" 18 echo 'To add this entry to gemlog, run `blog2gmi ${BLOG_DIR}/content/posts/${FILENAME} "Blog Post Title"`' 19 20# Convert blog entry to gemlog 21[group('blogging')] 22blog2gmi filename title: 23 #!/usr/bin/env bash 24 SCRIPT_DIR="${HOME}/repos/tildegit.org/hyperreal/hyperreal.coffee/scripts" 25 BLOG_POST_FILE={{ filename }} 26 BLOG_POST_TITLE={{ title }} 27 "${SCRIPT_DIR}/blog2gemini ${BLOG_POST_FILE} ${BLOG_POST_TITLE}" 28 echo "To push and deploy changes, run `push-deploy`" 29 30# Convert website page changes to gemtext and send to capsule 31[group('blogging')] 32board-capsule: 33 #!/usr/bin/env bash 34 WEBSITE_DIR="${HOME}/repos/tildegit.org/hyperreal/hyperreal.coffee/http" 35 CAPSULE_DIR="${HOME}/repos/tildegit.org/hyperreal/hyperreal.coffee/gemini" 36 37 find "${WEBSITE_DIR}/content" \ 38 -maxdepth 1 \ 39 -type f \ 40 -not -name "_index.md" \ 41 -exec md2gemini -w -d "$CAPSULE_DIR" -f -m {} \; 42 43 echo "To push and deploy changes, run `push-deploy`" 44 45# Push hyperreal.coffee changes to git and deploy website and capsule 46[group('blogging')] 47push-deploy: 48 #!/usr/bin/env bash 49 set -euo pipefail 50 51 HC_DIR="${HOME}/repos/tildegit.org/hyperreal/hyperreal.coffee" 52 cd "$HC_DIR" 53 msg_info="$(( $(git rev-list --count HEAD) + 1)) $(date '+%Y-%m-%d %H:%M:%S')" 54 git add . 55 git commit -m "Update: ${msg_info}" 56 git push -u origin main 57 58 WEBSITE_DIR="${HC_DIR}/http" 59 CAPSULE_DIR="${HC_DIR}/gemini" 60 PUBLIC_DIR="${HOME}/public_html" 61 62 rm -rf "${PUBLIC_DIR}/"* 63 hugo --gc --minify -d "${PUBLIC_DIR}" -s "$WEBSITE_DIR" 64 rsync \ 65 -avz \ 66 --delete \ 67 "${PUBLIC_DIR}"/ \ 68 jas@hyperreal.carp-wyvern.ts.net:/home/jas/public/html 69 70 rsync \ 71 -avz \ 72 --delete \ 73 "$CAPSULE_DIR"/ \ 74 jas@hyperreal.carp-wyvern.ts.net:/home/jas/public/gemini/hyperreal.coffee 75 76 echo 77 echo "Website and capsule successfully deployed" 78 79# New feelslog entry 80[group('blogging')] 81newfeels tags: 82 #!/usr/bin/env bash 83 DATE=$(date '+%Y-%m-%d') 84 TAGS="$@" 85 FEELSDIR="${HOME}/repos/tildegit.org/hyperreal/feelslog" 86 PREV_ENTRY=$(find "$FEELSDIR/src" -name "*.md" -exec basename {} \; | sort | tail -1 | cut -c 18-21) 87 NEXT_ENTRY="00$(echo "$PREV_ENTRY" + "1" | bc)" 88 NEXT_ENTRY_FILENAME="${FEELSDIR}/src/${DATE}-entry-${NEXT_ENTRY}.md" 89 URL="$(echo "$DATE" | tr "-" "/")/entry-${NEXT_ENTRY}/" 90 cat <<EOF >"$NEXT_ENTRY_FILENAME" 91 --- 92 title: Entry $NEXT_ENTRY 93 date: $(date '+%Y-%m-%d %H:%M:%S %z') 94 tags: $(echo "${TAGS// /, }") 95 slug: entry-$NEXT_ENTRY 96 --- 97 98 EOF 99 nvim "$NEXT_ENTRY_FILENAME" 100 echo "URL: https://feels.hyperreal.coffee/${URL}" 101 102# Publish feelslog 103[group('blogging')] 104publish-feels: 105 #!/usr/bin/env bash 106 set -euo pipefail 107 BSSG_DIR="${HOME}/repos/brew.bsd.cafe/stefano/BSSG" 108 if [ ! -d "$BSSG_DIR" ]; then 109 mkdir -p "${HOME}/repos/brew.bsd.cafe/stefano" 110 git clone https://brew.bsd.cafe/stefano/BSSG.git "$BSSG_DIR" 111 else 112 cd "$BSSG_DIR" || exit 1 113 git pull 114 fi 115 FEELS_CONFIG="${HOME}/repos/tildegit.org/hyperreal/feelslog/config.sh.local" 116 "${BSSG_DIR}/bssg.sh" build --config "$FEELS_CONFIG" 117 118# vim: ts=4 sts=4 sw=4 et ft=just