#!/bin/bash
# Funktion "action" definieren: 
# action command ...
#
# command ausführen
# Davor: Logeintrag mit Datum sowie command incl. Parametern
# Danach: Logeintrag bei Erfolg von command: "ok"
#         Bei Mißerfolg: "*** failed (...) ***" (... = Exit Code)
#         Beides in derselben Zeile wie der Logeintrag davor
# Beide Log-Einträge sowohl anzeigen als auch an Logfile anhängen
# Fixer Filename des Logfiles: actionlog im Home-Verzeichnis
#
# stdout und stderr von command sollen *nicht* in den Logfile umgeleitet werden

export actionlog=~/actionlog

function action ()
{
    # tee ... das T-Stück für Pipelines:
    # Schreib den Input auf stdout und in die Datei (-a ... anhängen)
    echo -n "$(date): $@ ... " | tee -a "$actionlog"
    # in 95 % der Fälle reicht if "$@"
    # bei ganz komischen Dingen auf der Befehlszeile
    # (z.B. gequoteten Wildcards) hilft if eval "$@"
    if "$@"
        then echo "ok" | tee -a "$actionlog"
        else echo "*** failed ($?) ***" | tee -a "$actionlog"
    fi
}
