_trap 648 B

1234567891011121314151617181920212223242526272829303132
  1. function goodbye () {
  2. local DURATION=$(date --date=@$(( "$(date +%s)" - "$TRAP_START_TIME" )) --utc +%T)
  3. local CODE=$1
  4. cd "$TRAP_DIR"
  5. if [ "$CODE" == 0 ]; then
  6. m "$(realpath --relative-to="$ROOT" "$0") succeeded! $DURATION" "$GREEN"
  7. elif [ "$CODE" == abort ]; then
  8. m "Aborted $(realpath --relative-to="$ROOT" "$0")! $DURATION" "$RED"
  9. else
  10. m "Oh no! $(realpath --relative-to="$ROOT" "$0") failed! $DURATION" "$RED"
  11. fi
  12. }
  13. function trap_EXIT () {
  14. local ERR=$?
  15. goodbye "$ERR"
  16. exit "$ERR"
  17. }
  18. function trap_INT () {
  19. goodbye abort
  20. trap - EXIT
  21. exit 1
  22. }
  23. TRAP_DIR=$PWD
  24. TRAP_START_TIME=$(date +%s)
  25. trap trap_INT INT
  26. trap trap_EXIT EXIT