2023-11-19 23:06:39 -06:00
|
|
|
|
#!/bin/sh
|
|
|
|
|
#―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
|
|
|
|
|
# Name: mirror_feed
|
|
|
|
|
# Desc: Mirror an RSS/Atom feed to the fediverse, piecemeal.
|
|
|
|
|
# Reqs: sfeed, sfeed_update, sfeed_mastodon
|
|
|
|
|
# Date: 2023-11-19
|
|
|
|
|
# Lisc: GPLv3
|
|
|
|
|
# Auth: @jadedctrl@jam.xwx.moe
|
|
|
|
|
#―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
|
|
|
|
|
|
|
|
|
|
usage() {
|
|
|
|
|
echo "usage: $(basename $0) [-h] DIRECTORY"
|
|
|
|
|
echo "Updates an sfeed feed and posts new entries to the fediverse."
|
|
|
|
|
echo ""
|
|
|
|
|
echo "DIRECTORY must contain:"
|
|
|
|
|
echo " * The sfeed_update(1) config file, sfeedrc(5)."
|
|
|
|
|
echo " * 'sfeed/', a directory where posts are to be stored."
|
|
|
|
|
echo ""
|
|
|
|
|
echo "Optionally, DIRECTORY can contain 'sfeedenv', a script defining"
|
|
|
|
|
echo "the variables \$FEDI_AUTH and \$FEDI_SERVER."
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MIRROR_DIR="$1"
|
|
|
|
|
|
|
|
|
|
if test -z "$MIRROR_DIR" -o "$MIRROR_DIR" = "-h" -o "$MIRROR_DIR" = "--help"; then
|
|
|
|
|
usage
|
|
|
|
|
exit 2
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if test ! -d "$MIRROR_DIR"; then
|
|
|
|
|
1>&2 echo "The given DIRECTORY '$MIRROR_DIR' doesn’t seem to be a directory at"
|
|
|
|
|
1>&2 echo "all. Would you mind giving it another go?"
|
|
|
|
|
1>&2 echo ""
|
|
|
|
|
1>&2 usage
|
|
|
|
|
exit 3
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if test -f "$MIRROR_DIR/sfeedenv"; then
|
|
|
|
|
source "$MIRROR_DIR/sfeedenv" 2> /dev/null
|
|
|
|
|
fi
|
|
|
|
|
if test -z "$FEDI_AUTH" -o -z "$FEDI_SERVER"; then
|
|
|
|
|
1>&2 echo "The environment variables \$FEDI_AUTH and \$FEDI_SERVER are undefined."
|
|
|
|
|
1>&2 echo "Please set them before running $(basename "$0"), or define them in a"
|
|
|
|
|
1>&2 echo "script at the path '$MIRROR_DIR/sfeedenv'."
|
|
|
|
|
1>&2 echo ""
|
|
|
|
|
1>&2 usage
|
|
|
|
|
exit 4
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
2023-11-20 00:12:59 -06:00
|
|
|
|
sfeed_update "$MIRROR_DIR"/sfeedrc
|
|
|
|
|
cat "$MIRROR_DIR"/sfeed/* | sfeed_mastodon "$FEDI_SERVER"
|