#!/bin/bash
+# Copyright (C) 2014-2016 Ian Kelling
+
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+
+# http://www.apache.org/licenses/LICENSE-2.0
+
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
logq () {
- local help="Usage: logq [-h|--help] COMMAND [ARG...]
+ 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
+ if [[ $1 == --help || $1 == -h ]]; then
+ echo "$help"
+ return
+ fi
+ if [[ $# == 0 ]]; then
+ echo "error: need 1 or more arguments
$help"
- return 1
- fi
+ 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
+ # 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}"
+ 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"
+ printf "%s\n%s\n\n" "Log of $prettycommand" "$(date)" >"$file"
- if [[ $- != *x* ]]; then
- echo "log $file = $@"
- fi
+ 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
+ # 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
- return $logq_ret
+ $x
+ fi
+ return $logq_ret
}