diff --git a/uwatch b/uwatch new file mode 100755 index 0000000..3949a0e --- /dev/null +++ b/uwatch @@ -0,0 +1,77 @@ +#!/bin/bash +# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 +source "$(dirname "$0")/lib/ulib/ulib" || exit 1 +urequire DEFAULTS + +function display_help() { + uecho "$scriptname: afficher l'heure + +USAGE + $scriptname [options] + +OPTIONS + -t, --time + Afficher l'heure (par défaut) + -c, --count + Afficher le temps écoulé depuis le lancement de ce script + -u, --units + Avec l'option --count, afficher l'unité: sec., min. ou heures + -o, --offset NBSEC + Avec l'option --count, spécifier un nombre de secondes à partir duquel + compter + -s, --step NBSECS[=1] + Spécifier la période de rafraichissement de l'affichage + -a, --prefix PREFIX + Spécifier une chaine à afficher avant l'heure + -z, --suffix SUFFIX + Spécifier une chaine à afficher après l'heure + --cb + Equivalent à -c -s 30 -a 'Connecté depuis ' -z '...'" +} + +DEFAULT_STEP=1 + +what=time +units= +offset= +step= +prefix= +suffix= +args=( + --help '$exit_with display_help' + -t,--time what=time + -c,--count what=count + -u,--units units=1 + -o:,--offset: offset= + -s:,--step: step= + -a:,--prefix: prefix= + -z:,--suffix: suffix= + --cb '$what=count; units=1; step=5; prefix="Connecté depuis "; suffix="..."' +) +parse_args "$@"; set -- "${args[@]}" + +[ -n "$step" ] || step="$DEFAULT_STEP" +setx start=date +%s +[ -n "$offset" ] && start=$(($start - $offset)) + +while true; do + case "$what" in + time) + setx msg=date +%H:%M:%S + ;; + count) + setx now=date +%s + TZ= setx msg=date -d "@$(($now - $start))" +%H:%M:%S + msg="${msg#00:}"; msg="${msg#00:}" + if [ -n "$units" ]; then + if [ ${#msg} -ge 8 ]; then msg="$msg heures" + elif [ ${#msg} -eq 5 ]; then msg="$msg min" + elif [ ${#msg} -eq 2 ]; then msg="${msg#0} sec" + fi + fi + [ ${#msg} -eq 2 ] && msg="${msg#0}" + ;; + esac + echo -n $'\e[1G\e[K'"$prefix$msg$suffix" + sleep "$step" +done