summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app-antivirus/fangfrisch/files/fangfrisch-has-news.sh')
-rw-r--r--app-antivirus/fangfrisch/files/fangfrisch-has-news.sh82
1 files changed, 82 insertions, 0 deletions
diff --git a/app-antivirus/fangfrisch/files/fangfrisch-has-news.sh b/app-antivirus/fangfrisch/files/fangfrisch-has-news.sh
new file mode 100644
index 000000000000..7a018d911d32
--- /dev/null
+++ b/app-antivirus/fangfrisch/files/fangfrisch-has-news.sh
@@ -0,0 +1,82 @@
+#!/usr/bin/env bash
+# vim: ts=4 sw=4 noet ft=sh
+#
+# Example script to process Fangfrisch News.
+
+declare -r MAILFROM="noreply"
+declare -r MAILTO="alice@example.com"
+declare -r SUBJECT="Fangfrisch News are available"
+
+# Pick one of the following options and uncomment the 'declare'
+# statements. Otherwise, the script will not run otherwise.
+
+# Option 1: Mutt
+#declare -r MAILAPP="mutt"
+#declare -r MAILAPP_OPT=( "-s" "$SUBJECT" "$MAILTO" )
+
+# Option 2: sendmail
+#declare -r MAILAPP="sendmail"
+#declare -r MAILAPP_OPT=( "-t" )
+#export PATH="$PATH:/usr/sbin"
+
+# Option 3: swaks
+#declare -r MAILAPP="swaks"
+#declare -r MAILAPP_OPT=( "-d" "-" "-f" "$MAILFROM" "-t" "$MAILTO" )
+
+### No changes required below this line ###
+
+set -euo pipefail
+
+die() {
+ echo >&2 "$@"
+ exit 1
+}
+
+usage() {
+ die "Usage: $(basename "$0") {directory}"
+}
+
+gen_header() {
+ cat <<EOT
+From: Fangfrisch News <$MAILFROM>
+To: $MAILTO
+Subject: $SUBJECT
+
+EOT
+# Mail header must end with an empty line!
+}
+
+declare -a NEWSITEMS=()
+
+report_news() {
+ local dir=$1 ni
+ [ -d "$dir" ] || die "$dir is not a directory"
+ while IFS= read -r -d '' ni; do
+ if [ ${#NEWSITEMS[*]} -eq 0 ] && [ "$MAILAPP" != mutt ]; then
+ # Mutt does not need the header, others do.
+ gen_header
+ fi
+ NEWSITEMS+=( "$ni" )
+ echo -e "\n### $(basename "$ni"):\n"
+ cat "$ni"
+ done < <(find "$dir" -maxdepth 1 -type f -name "fangfrisch*.txt" -print0)
+}
+
+main() {
+ local t
+ [ -n "$MAILAPP" ] || die "MAILAPP is undefined, exiting."
+ if tty -s; then
+ # Running in a terminal session
+ t=$(mktemp)
+ # shellcheck disable=SC2064
+ trap "rm $t" EXIT
+ report_news "$@" | tee "$t" || exit 1
+ [ ! -s "$t" ] || "$MAILAPP" "${MAILAPP_OPT[@]}" >/dev/null <"$t"
+ else
+ report_news "$@" 2>&1 | "$MAILAPP" "${MAILAPP_OPT[@]}" >/dev/null
+ [ ${#NEWSITEMS[*]} -eq 0 ] || rm -v "${NEWSITEMS[@]}"
+ fi
+}
+
+[ $# -ge 1 ] || usage
+main "$@"