- errors=3
- while true; do
- if [[ $1 == --help ]]; then
- echo "$help"
- return
- elif [[ $1 == -[0-9]* ]]; then
- errors=${1#-}
- shift
- elif [[ $1 == -- ]]; then
- shift
- break
- else
- break
- fi
- done
- log_name=$1
- # todo, make option & make them overridable based on command line or env variable
- [[ -d $cbase ]] || mkdir -p $cbase
- c=$cbase/$log_name
- # http://stackoverflow.com/questions/2456750/detect-presence-of-stdin-contents-in-shell-script
- log=false
- if [[ $2 ]]; then
- log=true
- # read stdin for anything which is not just a newline
- elif [[ ! -t 0 ]]; then
- while read -r x; do
- output+=( $x )
- [[ $x ]] && log=true
- done
- fi
- glob="$c[0-9]*"
- file=($glob); [[ $file != "$glob" ]] || file=
- if $log; then
- out=append
- if [[ $file ]]; then
- i="${file#$c}"
- if (( i < errors )); then
- new_file=$c$((i+1))
- mv $file $new_file
- file=$new_file
- if [[ $file == $c$errors ]]; then
- out="tee -a"
- fi
- fi
- else
- file=${c}1
- fi
- $out $file <<<"log-once: $(date "+%A, %B %d, %r")"
- if [[ $2 ]]; then
- $out $file <<<"$2"
- else
- $out $file <<<"${output[@]}"
- $out $file
- fi
- return 0
+ errors=3
+ while true; do
+ if [[ $1 == --help ]]; then
+ echo "$help"
+ return
+ elif [[ $1 == -[0-9]* ]]; then
+ errors=${1#-}
+ shift
+ elif [[ $1 == -- ]]; then
+ shift
+ break
+ else
+ break