From 90eaebabcaaea74237f34cf05709625345f276cc Mon Sep 17 00:00:00 2001 From: EuAndreh Date: Thu, 12 May 2022 12:01:54 -0300 Subject: Move Git repository into ~/.usr/.git/ --- bin/with-email | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100755 bin/with-email (limited to 'bin/with-email') diff --git a/bin/with-email b/bin/with-email new file mode 100755 index 00000000..9d6326b6 --- /dev/null +++ b/bin/with-email @@ -0,0 +1,84 @@ +#!/bin/sh +set -eu + +usage() { + cat <<-'EOF' + Usage: + with-email [-s SUBJECT] COMMAND... + with-email -h + EOF +} + +help() { + cat <<-'EOF' + + Options: + -s SUBJECT set the subject of the email + -h, --help show this message + + COMMAND the command to be wrapped + EOF +} + +for flag in "$@"; do + case "$flag" in + --) + break + ;; + --help) + usage + help + exit + ;; + *) + ;; + esac +done + +SUBJECT='NO SUBJECT' +while getopts 's:h' flag; do + case "$flag" in + s) + SUBJECT="$OPTARG" + ;; + h) + usage + help + exit + ;; + *) + usage >&2 + exit 2 + ;; + esac +done +shift $((OPTIND - 1)) + +assert_arg() { + if [ -z "$1" ]; then + printf 'Missing %s\n\n' "$2" >&2 + usage >&2 + exit 2 + fi +} + +assert_arg "${1:-}" 'COMMAND...' + +now() { + date '+%Y-%m-%dT%H:%M:%S%Z' +} + +OUT="$(mkstemp)" +{ + printf 'Running command: %s\n' "$*" + printf 'Starting at: %s\n' "$(now)" + printf '\n' + + STATUS=0 + "$@" 2>&1 || STATUS=$? + + printf '\n' + printf '\nFinished at: %s\n' "$(now)" +} 2>&1 1>"$OUT" + +email -s "(exit status: $STATUS) - $SUBJECT" eu@euandre.org < "$OUT" -- cgit v1.3