#!/bin/sh set -eu usage() { cat <<-'EOF' Usage: boop [-m MESSAGE] [-n] -- COMMAND... boop -h EOF } help() { cat <<-'EOF' Options: -m MESSAGE text message of the desktop notification (default: COMMAND) -n don't play any sound -x only notify when COMMAND fails -h, --help show this message COMMAND the commands to be executed Examples: Play the positive sound, using the command as message: $ boop echo 123 Fail with the underlying 127 return code with the message "ERROR": $ boop -m ERROR ech 123 EOF } for flag in "$@"; do case "$flag" in (--) break ;; (--help) usage help exit ;; (*) ;; esac done SOUND=-s SILENT=false while getopts 'm:nxh' flag; do case "$flag" in (m) MESSAGE="$OPTARG" ;; (n) SOUND= ;; (x) SILENT=true ;; (h) usage help exit ;; (*) usage >&2 exit 2 ;; esac done shift $((OPTIND - 1)) CMD="$*" set +e "$@" STATUS=$? set -e if [ "$STATUS" = 0 ]; then N=0 else N=1 fi if [ "$N" = 1 ] || [ "$SILENT" = false ]; then msg -"$N" -b $SOUND -D "${MESSAGE:-`printf '%s\n\n(%s)\n' "$CMD" "$PWD"`}" fi exit "$STATUS"