diff --git a/.woodpecker.yml b/.woodpecker.yml new file mode 100644 index 0000000..394829b --- /dev/null +++ b/.woodpecker.yml @@ -0,0 +1,8 @@ +steps: + rss: + image: alpine + commands: + - apk add curl + - ./bin/rss -f https://www.deblan.io/RSS + when: + event: [deployment, cron] diff --git a/bin/rss b/bin/rss new file mode 100755 index 0000000..5891277 --- /dev/null +++ b/bin/rss @@ -0,0 +1,125 @@ +#!/bin/sh + +set -eu + +usage() { + printf "Usage: %s [-l DEBUG_LEVEL] [-f URL] [-h]\n" "$0" +} + +help() { + cat << EOH + SYNOPSIS + $0 [-l DEBUG_LEVEL] [-f FEED_URL] [-h] + + DESCRIPTION + + $0 generates a list of my personal blog posts. + + OPTIONS + + -h Show this help + + -l debug|info|notice|warning|error + Debug level + + -f URL + URL of the RSS Feed +EOH +} + +on_interrupt() { + log -l notice "" + log -l notice "Process aborted!" + + exit 130 +} + +main() { + while getopts "f:l:h" option; do + case "${option}" in + h) help; exit 0;; + l) LOG_VERBOSE="$OPTARG";; + f) RSS_URL="$OPTARG";; + ?) log -l error "$(usage)"; exit 1;; + esac + done + + # log [-t] [-l debug|info|notice|warning|error] message + + key=0 + is_first=1 + title= + link= + + curl --silent "$RSS_URL" \ + | grep -E "<(title|link)" \ + | grep -v "" \ + | grep -v "gemini:" \ + | while read line; do + if [ $((key%2)) -eq 1 ]; then + title="$(printf "$line" | sed 's/