diff --git a/bin/git-effort b/bin/git-effort index 278689b..5a102f5 100755 --- a/bin/git-effort +++ b/bin/git-effort @@ -35,7 +35,7 @@ show_cursor_and_cleanup() { # active_days() { - uniq <(echo "$1") | wc -l + uniq <<<$(echo "$1") | wc -l } # @@ -119,33 +119,37 @@ above_index=0 has_above=false next_is_above=false num_files=0 -for i in `seq ${#@}` -do - cur="${!i}" - if "$next_is_above" ; then - above="$cur" - next_is_above=false - continue - fi +# Some implementations of `seq` gives "1\n0" for seq 0 +if [ $# -gt 0 ] ; then + for i in `seq ${#@}` + do + cur="${!i}" - case "$cur" in - --above) - if "$has_above" ; then - echo "error: --above can only be specified one time" 1>&2 - exit 1 - fi - next_is_above=true - has_above=true - above_index=$(( i - 1 )) - ;; - --*) - ;; - *) - num_files=$(( num_files + 1 )) - ;; - esac -done + if "$next_is_above" ; then + above="$cur" + next_is_above=false + continue + fi + + case "$cur" in + --above) + if "$has_above" ; then + echo "error: --above can only be specified one time" 1>&2 + exit 1 + fi + next_is_above=true + has_above=true + above_index=$(( i - 1 )) + ;; + --*) + ;; + *) + num_files=$(( num_files + 1 )) + ;; + esac + done +fi # Exit if above-value is not an int if [ -z "${above##*[!0-9]*}" ] ; then @@ -193,9 +197,18 @@ export -f dates export above export log_args + +bash_params= +# If bash exits sucessfully with --import-functions, +# then we need to pass it (FreeBSD probably) +bash --import-functions -c ":" 1>/dev/null 2>&1 +if [ $? -eq 0 ] ; then + bash_params="--import-functions" +fi + heading # send files to effort -printf "%s\0" "${files[@]}" | xargs -0 -n 1 -P 4 -I % bash -c "effort \"%\"" | tee $tmp +printf "%s\0" "${files[@]}" | xargs -0 -n 1 -P 4 -I % bash $bash_params -c "effort \"%\"" | tee $tmp # if more than one file, sort and print test "$(wc -l $tmp | awk '{print $1}')" -gt 1 && sort_effort