exec_git_command using exec_process_substitution()

This commit is contained in:
Gerhard Hoffmann 2022-06-04 14:48:30 +02:00
parent 4a8b76f815
commit 27086af023

View File

@ -9,6 +9,7 @@
# source ./log_helpers # source ./log_helpers
source ./general_utils
readonly GIT_SSL_NO_VERIFY=true readonly GIT_SSL_NO_VERIFY=true
readonly repository_already_up_to_date=2 readonly repository_already_up_to_date=2
@ -16,30 +17,12 @@ readonly repository_already_up_to_date=2
# #
exec_git_command () { exec_git_command () {
local func="${FUNCNAME[0]}" local func="${FUNCNAME[0]}"
log_debug "$func:${LINENO} exec-ing [$*]" log_debug "$func:${LINENO} exec-ing [$*]"
exec {fd}< <(eval "$@") local __git_result=$(exec_process_substitution $*)
log_debug "$func:${LINENO} result=$__git_result"
# if [ "$*" = "git pull" ]; then printf '%s' "$__git_result"
# else
# exec {fd}< <($@)
# fi
local ps_pid=$! # remember pid of process substitution
local git_result=""
while read t <&$fd; do
if ! [ -z "$t" ]; then
git_result="${git_result}$t"
fi
done
exec {fd}>&- # close fd (i.e. process substitution)
wait $ps_pid # wait for the subshell to finish
git_result=$(printf "$git_result" | tr '\n' ' ')
printf "%s\n" $git_result
} }
# #