satisfy shellcheck
[log-quiet] / failmail
index 703e13038d6c7428d32e9c4a3f21f6d84966317b..6bb1e94cf941381b7c899e9de06ab423de15f77d 100755 (executable)
--- a/failmail
+++ b/failmail
@@ -1,5 +1,12 @@
 #!/bin/bash
-# Copyright (C) 2016 Ian Kelling
+# I, Ian Kelling, follow the GNU license recommendations at
+# https://www.gnu.org/licenses/license-recommendations.en.html. They
+# recommend that small programs, < 300 lines, be licensed under the
+# Apache License 2.0. This file contains or is part of one or more small
+# programs. If a small program grows beyond 300 lines, I plan to switch
+# its license to GPL.
+
+# Copyright 2024 Ian Kelling
 
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+
 case $1 in
-    -h|--help)
-        cat <<'EOF'
-usage: logmail CMD [ARGS...]
+  -h|--help)
+    cat <<'EOF'
+usage: failmail CMD [ARGS...]
 
 Send mail in case of failure of CMD
+
+Emails to $MAILTO or if unset, $USER@localhost
 EOF
-        exit 0
-        ;;
+    exit 0
+    ;;
 esac
 
+mailto=$USER@localhost
+if [[ $MAILTO ]]; then
+  mailto=$MAILTO
+fi
+
 t=$(mktemp)
-if ! "$@" &>"$t"; then
-    mail -s "$HOSTNAME: $*" $USER@localhost <"$t"
-    rm "$t"
+code=0
+"$@" &>"$t" || code=$?
+if (( code )); then
+  mail -s "$HOSTNAME: code: $code cmd: $*" $mailto <"$t"
+  rm "$t"
 fi
 exit 0