justfiles for automating various tasks on my workstation
1# New gemlog entry
2[group('blogging')]
3newgemlog slug:
4 #!/usr/bin/env bash
5 GEMLOG_DIR="${HOME}/nextcloud/sites/gemini/hyperreal.coffee/gemlog"
6 FILENAME_DATE=$(date '+%Y-%m-%d')
7 FILENAME="${FILENAME_DATE}-{{ slug }}.gmi"
8 cat <<EOF >"${GEMLOG_DIR}/${FILENAME}"
9 # Title
10
11 ## END
12 Last updated: "$FILENAME_DATE"
13
14 => ../gemlog Gemlog archive
15 => ../ hyperreal.coffee
16 EOF
17 nvim "${GEMLOG_DIR}/${FILENAME}"
18
19# Edit gemlog atom feed
20[group('blogging')]
21edit-gemlog-atom:
22 #!/usr/bin/env bash
23 nvim "${HOME}/nextcloud/sites/gemini/hyperreal.coffee/gemlog/atom.xml"
24
25# Edit gemlog index
26[group('blogging')]
27edit-gemlog-index:
28 #!/usr/bin/env bash
29 nvim "${HOME}/nextcloud/sites/gemini/hyperreal.coffee/gemlog/index.gmi"
30
31# Publish changes to capsule
32[group('blogging')]
33publish-gemini:
34 #!/usr/bin/env bash
35 ssh jas@hyperreal.carp-wyvern.ts.net \
36 -- \
37 rm -rf /home/jas/public/gemini/hyperreal.coffee
38 rsync \
39 -aAXP \
40 "${HOME}/nextcloud/sites/gemini/hyperreal.coffee" \
41 jas@hyperreal.carp-wyvern.ts.net:/home/jas/public/gemini
42 ssh jas@hyperreal.carp-wyvern.ts.net \
43 -- \
44 tree /home/jas/public/gemini
45 echo
46 echo "Gemini capsule published successfully."
47
48# New blog entry
49[group('blogging')]
50newblog slug:
51 #!/usr/bin/env bash
52 BLOG_DIR="${HOME}/repos/tildegit.org/hyperreal/hyperreal.coffee"
53 FILENAME_DATE=$(date '+%Y-%m-%d')
54 POST_DATE=$(date '+%Y-%m-%d %H:%M:%S')
55 FILENAME="${FILENAME_DATE}-{{ slug }}.md"
56 cat <<EOF >"${BLOG_DIR}/content/posts/${FILENAME}"
57 +++
58 title = ''
59 date = $POST_DATE
60 tags = []
61 +++
62
63 EOF
64 nvim "${BLOG_DIR}/content/posts/${FILENAME}"
65
66# New feelslog entry
67[group('blogging')]
68newfeels tags:
69 #!/usr/bin/env bash
70 DATE=$(date '+%Y-%m-%d')
71 TAGS="$@"
72 FEELSDIR="${HOME}/nextcloud/sites/feels.hyperreal.coffee"
73 PREV_ENTRY=$(find "$FEELSDIR/src" -name "*.md" -exec basename {} \; | sort | tail -1 | cut -c 18-21)
74 NEXT_ENTRY="00$(echo "$PREV_ENTRY" + "1" | bc)"
75 NEXT_ENTRY_FILENAME="${FEELSDIR}/src/${DATE}-entry-${NEXT_ENTRY}.md"
76 URL="$(echo "$DATE" | tr "-" "/")/entry-${NEXT_ENTRY}/"
77 cat <<EOF >"$NEXT_ENTRY_FILENAME"
78 ---
79 title: Entry $NEXT_ENTRY
80 date: $(date '+%Y-%m-%d %H:%M:%S %z')
81 tags: $(echo "${TAGS// /, }")
82 slug: entry-$NEXT_ENTRY
83 ---
84
85 EOF
86 nvim "$NEXT_ENTRY_FILENAME"
87 echo "URL: https://feels.hyperreal.coffee/${URL}"
88
89# Publish feelslog
90[group('blogging')]
91publish-feels:
92 #!/usr/bin/env bash
93 set -euo pipefail
94 BSSG_DIR="${HOME}/repos/brew.bsd.cafe/stefano/BSSG"
95 if [ ! -d "$BSSG_DIR" ]; then
96 mkdir -p "${HOME}/repos/brew.bsd.cafe/stefano"
97 git clone https://brew.bsd.cafe/stefano/BSSG.git "$BSSG_DIR"
98 fi
99 FEELS_CONFIG="${HOME}/nextcloud/sites/feels.hyperreal.coffee/config.sh.local"
100 OUTPUT_DIR="${HOME}/nextcloud/sites/feels.hyperreal.coffee/output"
101 SITE_URL="https://feels.hyperreal.coffee"
102 REMOTE_USER="jas"
103 REMOTE_HOST="hyperreal.carp-wyvern.ts.net"
104 REMOTE_PATH="/home/jas/public/feels"
105 cd "$BSSG_DIR"
106 "${BSSG_DIR}/bssg.sh" build --config "$FEELS_CONFIG"
107 rsync -az --delete "$OUTPUT_DIR"/ "${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_PATH}"
108 echo
109 echo "Site deployed successfully"
110
111# vim: ts=4 sts=4 sw=4 et ft=just