function is useful, bring it back
authorIan Kelling <ian@iankelling.org>
Tue, 21 Jun 2016 05:42:44 +0000 (22:42 -0700)
committerIan Kelling <ian@iankelling.org>
Tue, 21 Jun 2016 05:42:44 +0000 (22:42 -0700)
logq-function [new file with mode: 0755]

diff --git a/logq-function b/logq-function
new file mode 100755 (executable)
index 0000000..8f73479
--- /dev/null
@@ -0,0 +1,55 @@
+#!/bin/bash
+logq () {
+    local help="Usage: logq [-h|--help] COMMAND [ARG...]
+
+Log Quietly. Run COMMAND with ARGs, log to temp file. Output return code,
+command, and log path. Tail log if there is a failure.
+Follows output format of logsave."
+
+    if [[ $1 == --help || $1 == -h ]]; then
+        echo "$help"
+        return
+    fi
+    if [[ $# == 0 ]]; then
+       echo "error: need 1 or more arguments
+$help"
+       return 1
+    fi
+
+    # deliniate arguments, so spaces aren't ambiguous
+    local index=0
+    local x prettycommand
+    for x in "$@"; do
+        prettycommand+="[$index]$x "
+        index=$(( index+1 ))
+    done
+
+    local file="$*"
+    file="$(mktemp -d)/${file//[[:space:]\/]/_}"
+    # give us ~20 char filename max
+    file="${file:0:40}"
+
+    printf "%s\n%s\n\n" "Log of $prettycommand" "$(date)" >"$file"
+
+    if [[ $- != *x* ]]; then
+        echo "log $file = $@"
+    fi
+
+    # we will propagate any errors
+    local logq_ret=$(
+        set +e
+        trap ERR
+        "$@" &>> "$file"
+        echo $?
+          )
+    printf "\n%s\n%s\n" "$(date)" "----------------" >> "$file"
+
+    if [[ $logq_ret != 0 ]]; then
+        x="tail -n 100 $file"
+        if [[ $- != *x* ]]; then
+            echo "logq failure. $x :"
+        fi
+        $x
+    fi
+    return $logq_ret
+}