From b62242eec1f8fb28845c45f19929231db40261fa Mon Sep 17 00:00:00 2001 From: EuAndreh Date: Thu, 9 May 2024 14:30:17 -0300 Subject: src/statusconv: Add working utility --- deps.mk | 1 + src/statusconv | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100755 src/statusconv diff --git a/deps.mk b/deps.mk index 7dd2086..babcad3 100644 --- a/deps.mk +++ b/deps.mk @@ -5,6 +5,7 @@ sources.sh = \ src/mkstemp \ src/now \ src/pre \ + src/statusconv \ src/tempname \ src/timestamp \ src/uuid \ diff --git a/src/statusconv b/src/statusconv new file mode 100755 index 0000000..9bc858b --- /dev/null +++ b/src/statusconv @@ -0,0 +1,50 @@ +#!/bin/sh +set -eu + + +FROM_N='' +TO_N='' +for flag in "$@"; do + case "$flag" in + *[0-9]:*[0-9]) + X="$(printf '%s' "$flag" | cut -d ':' -f1)" + Y="$(printf '%s' "$flag" | cut -d ':' -f2)" + FROM_N="$FROM_N $X" + TO_N="$TO_N $Y" + shift + ;; + *) + break + ;; + esac +done + + +if [ "$1" = '--' ]; then + shift +fi + +STATUS=0 +"$@" || STATUS=$? + +FOUND=false +I=-1 +for from in $FROM_N; do + I=$((I + 1)) + if [ "$from" = "$STATUS" ]; then + FOUND=true + break + fi +done + +if [ "$FOUND" = false ]; then + exit "$STATUS" +fi + +J=-1 +for to in $TO_N; do + J=$((J + 1)) + if [ "$J" = "$I" ]; then + exit "$to" + fi +done -- cgit v1.2.3