brmake 886 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. #!/bin/bash
  2. # (C) 2016, "Yann E. MORIN" <yann.morin.1998@free.fr>
  3. # License: WTFPL, https://spdx.org/licenses/WTFPL.html
  4. main() {
  5. local ret start d h m mf
  6. start=${SECONDS}
  7. make "${@}" \
  8. &> >( while read -r line; do
  9. printf "%(%Y-%m-%dT%H:%M:%S)T %s\n" -1 "${line}"
  10. done \
  11. |tee -a br.log \
  12. |grep --line-buffered --colour=never -E '>>>' \
  13. |sed --unbuffered -E 's/^([0-9T:-]{19}) [[:print:]]*(.*>>> )/\1 \2/'
  14. )
  15. ret=${?}
  16. d=$((SECONDS-start))
  17. printf "Done in "
  18. h=$((d/3600))
  19. d=$((d%3600))
  20. [ ${h} -eq 0 ] || { printf "%dh " ${h}; mf="02"; }
  21. m=$((d/60))
  22. d=$((d%60))
  23. [ ${m} -eq 0 ] || { printf "%${mf}dmin " ${m}; sf="02"; }
  24. printf "%${sf}ds" ${d}
  25. if [ ${ret} -ne 0 ]; then
  26. printf " (error code: %s)" ${ret}
  27. fi
  28. printf "\n"
  29. return ${ret}
  30. }
  31. main "${@}"