summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--deps.mk4
-rwxr-xr-xsrc/clock33
-rwxr-xr-xsrc/minutes7
-rwxr-xr-xsrc/round4
-rwxr-xr-xsrc/statusf6
5 files changed, 54 insertions, 0 deletions
diff --git a/deps.mk b/deps.mk
index babcad3..dec3a78 100644
--- a/deps.mk
+++ b/deps.mk
@@ -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"