diff options
-rw-r--r-- | deps.mk | 4 | ||||
-rwxr-xr-x | src/clock | 33 | ||||
-rwxr-xr-x | src/minutes | 7 | ||||
-rwxr-xr-x | src/round | 4 | ||||
-rwxr-xr-x | src/statusf | 6 |
5 files changed, 54 insertions, 0 deletions
@@ -1,11 +1,15 @@ sources.sh = \ src/assert-arg \ + src/clock \ src/color \ + src/minutes \ src/mkdtemp \ src/mkstemp \ src/now \ src/pre \ + src/round \ src/statusconv \ + src/statusf \ src/tempname \ src/timestamp \ src/uuid \ diff --git a/src/clock b/src/clock new file mode 100755 index 0000000..250c028 --- /dev/null +++ b/src/clock @@ -0,0 +1,33 @@ +#!/bin/sh +set -eu + +usage() { + cat <<-'EOF' + Usage: + clock [-o FILE] [--] CMD... + EOF +} + +OUTPUT=/dev/stdout +while getopts 'o:' flag; do + case "$flag" in + (o) + OUTPUT="$OPTARG" + ;; + (*) + usage >&2 + exit 2 + ;; + esac +done +shift $((OPTIND - 1)) + + +STATUS_F="$(mkstemp)" +trap 'rm -f "$STATUS_F"' EXIT + +START="$(now -E)" +statusf "$STATUS_F" "$@" +END="$(now -E)" +printf '%s %s' "$END" "$START" | awk '{ printf "%f\n", $1 - $2 }' > "$OUTPUT" +exit "$(cat "$STATUS_F")" diff --git a/src/minutes b/src/minutes new file mode 100755 index 0000000..16b669f --- /dev/null +++ b/src/minutes @@ -0,0 +1,7 @@ +#!/bin/sh +set -eu + +ROUNDED="$(round "$1")" +MINUTES=$((ROUNDED / 60)) +SECONDS=$((ROUNDED % 60)) +printf '%sm%ss\n' "$MINUTES" "$SECONDS" diff --git a/src/round b/src/round new file mode 100755 index 0000000..3bfebba --- /dev/null +++ b/src/round @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +awk -vN="$1" 'BEGIN { printf "%.f\n", N }' diff --git a/src/statusf b/src/statusf new file mode 100755 index 0000000..2e799cf --- /dev/null +++ b/src/statusf @@ -0,0 +1,6 @@ +#!/bin/sh +set -eu + +STATUS=0 +"$@" || STATUS=$? +printf '%s\n' > "$1" |