commit b2ed076b263fbfcefc873386a08fa2d30f95ad56
parent 4fc1320ced9ec0c303ff69fed8466acd502bccd1
Author: Anders Damsgaard <anders@adamsgaard.dk>
Date:   Thu,  2 May 2019 16:16:24 +0200
Add tsp-rerun script
Diffstat:
| A | bin/tsp-rerun | | | 73 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | 
1 file changed, 73 insertions(+), 0 deletions(-)
diff --git a/bin/tsp-rerun b/bin/tsp-rerun
@@ -0,0 +1,73 @@
+#!/bin/sh
+
+version=0.1
+
+show_help() {
+    echo "usage: ${0##*/} [OPTIONS] ID1 [ID2...[ID N]]"
+    echo "will rerun the command from each job ID from 'tsp' as a new 'tsp' job"
+    echo "If no ID is specified, this program will expect IDs as stdin."
+    echo
+    echo "OPTIONS are one or more of the following:"
+    echo "   -V,  --verbose       show diagnostic information during execution"
+    echo "   -v,  --version       show version and license information"
+    echo "   -h,  --help          show this message"
+    echo "   --                   do not consider any following args as options"
+}
+
+show_version() {
+    echo "${0##*/} version $version"
+    echo "Licensed under the GNU Public License, v3+"
+    echo "written by Anders Damsgaard, anders@adamsgaard.dk"
+    echo "https://gitlab.com/admesg/dotfiles"
+}
+
+get_tsp_job_command() {
+    tsp | grep "^$1 " | sed 's/  */ /g' | cut -d' ' -f6-
+}
+
+handle_id() {
+    cmd="tsp $(get_tsp_job_command "$1")"
+    [ "$verbose" = 1 ] && echo "$cmd"
+    eval "$cmd"
+}
+
+die() {
+    printf '%s\n' "$1" >&2
+    exit 1
+}
+
+verbose=0
+while :; do
+    case "$1" in
+        -h|-\?|--help)
+            show_help
+            exit 0
+            ;;
+        -v|--version)
+            show_version
+            exit 0
+            ;;
+        -V|--verbose)
+            verbose=1
+            ;;
+        --) # end all options
+            shift
+            break
+            ;;
+        -?*)
+            die 'Error: Unknown option specified'
+            ;;
+        *)  # No more options
+            break
+    esac
+    shift
+done
+
+if [ $# -lt 1 ]; then
+    id="$(cat)"
+    handle_id "$id"
+else
+    for id in "$@"; do
+        handle_id "$id"
+    done
+fi