60 lines
3.2 KiB
HTML
60 lines
3.2 KiB
HTML
<article>
|
|
<header id="title-block-header">
|
|
<p class="date">2025-12-21 18:00:00 -08:00</p>
|
|
<h1 class="title">A Now Page</h1>
|
|
</header>
|
|
<p>I have decided to create <a href="/now/">a Now page</a> for my website. Here is <a href="https://indieweb.org/now">the official documentation</a> for Now pages, but I decided to put my own spin on the idea. I have been considering adding a microblog page for my website, which would be a place that I can quickly add posts, something like <a href="https://github.com/buckket/twtxt">a twtxt file</a>, but I don't particularly like a permanent, endlessly long file for a microblog. I prefer treating microblog posts as temporary and ephemeral, that's the reason why I have my Mastodon posts delete themselves after a year.</p>
|
|
<p>I have created the following script for quickly and easily updating to my Now page and Mastodon at the same time from my terminal. This script compliments the blog.sh script I have created for building this website, which you can look at in <a href="https://git.0x212.com/iiogama/website">the git repo</a>.</p>
|
|
<p>All I need to do is run something like this:</p>
|
|
<pre>post.sh "Extremely thoughtful message for my thousands of followers"</pre>
|
|
<p>and my scripts will post my thoughts to Mastodon, update my Now page, update <a href="/index.xml">my RSS feed</a>, and upload the files to my web server.</p>
|
|
<h2>Post.sh script</h2>
|
|
<pre>
|
|
#!/usr/bin/env bash
|
|
|
|
TIMESTAMP="$(date '+%Y-%m-%d %H:%M:%S %:z')"
|
|
ID="$(date -d "$TIMESTAMP" '+%Y%m%d%H%M%S')"
|
|
INPUT="$*"
|
|
CHAR_COUNT="$(printf '%s' "$INPUT" | wc -c)"
|
|
CHAR_LIMIT="500"
|
|
if [[ "$CHAR_COUNT" -eq 0 ]] || [[ "$CHAR_COUNT" -gt "$CHAR_LIMIT" ]]; then
|
|
if [[ "$(command -v vipe)" = "" ]]; then
|
|
printf 'Error: Unable to create post. Character count is %s/%s' "$CHAR_COUNT" "$CHAR_LIMIT"
|
|
printf 'Tip: Install moreutils for vipe command.'
|
|
exit 1
|
|
else
|
|
POST="$(printf %s "$INPUT" | vipe)"
|
|
fi
|
|
else
|
|
POST="$INPUT"
|
|
fi
|
|
masto() {
|
|
if [[ "$(command -v toot)" = "" ]]; then
|
|
printf "Error: Unable to post to Mastodon, toot command not found.\n"
|
|
else
|
|
toot post "$POST"
|
|
fi
|
|
}
|
|
now() {
|
|
local THIS_BLOG_DIR
|
|
THIS_BLOG_DIR="$HOME/Documents/blog"
|
|
source "$THIS_BLOG_DIR/config.env"
|
|
local THIS_NOW_DIR
|
|
THIS_NOW_DIR="$THIS_BLOG_DIR/$NOW_DIR"
|
|
local THIS_TEMPLATES_DIR
|
|
THIS_TEMPLATES_DIR="$THIS_BLOG_DIR/$TEMPLATES_DIR"
|
|
test -d "$THIS_NOW_DIR" || mkdir -p "$THIS_NOW_DIR"
|
|
local HTML_DATE
|
|
HTML_DATE="<p id=\"$ID\"><i class=\"date\"<$TIMESTAMP</i<</p<"
|
|
local HTML_POST
|
|
HTML_POST="<p<$(echo "$POST" | sed 's!\n!</p<<p<!g')</p<"
|
|
printf '<article<\n<h1<Now</h1<\n%s\n%s\n</article<' "$HTML_DATE" "$HTML_POST" < "$THIS_NOW_DIR/index.html"
|
|
cp "$THIS_NOW_DIR/index.html" "$THIS_NOW_DIR/$ID.html"
|
|
cd "$THIS_BLOG_DIR"
|
|
just _push-blog
|
|
}
|
|
masto
|
|
now
|
|
</pre>
|
|
</article>
|