TMP="/tmp/$NAME.$$"
LOCK="/run/nb/$NAME.lock"
[ -z "$UID" ] && UID="$(id -u)"
+
+DEBUG=0
+[ "$1" = "-debug" ] && DEBUG=1 && shift
+
CLEANUP=0
-[ "$1" = "-cleanup" ] && CLEANUP=1
+[ "$1" = "-cleanup" ] && CLEANUP=1 && shift
+
+filter_name="$@"
#####################################################################
#
#
# Repos
#
-filter_name="$@"
exec_user() {
declare user="$1"
shift
+ declare exec_user_cmd="$@"
if [ "$USER" = "$user" ]; then
- eval "$*"
+ [ "$DEBUG" = "1" ] && echo "DEBUG: exec_user: $exec_user_cmd" 1>&2
+ eval "$exec_user_cmd"
elif [ "$USER" = "root" ]; then
- su - $user -c "cd \"$(pwd)\" && $*"
+ [ "$DEBUG" = "1" ] && printf "DEBUG: exec_user: %s\n" "su - $user -c 'cd \"$(pwd)\" && $exec_user_cmd'" 1>&2
+ #echo zaza
+ su - $user -c "cd \"$(pwd)\" && $exec_user_cmd"
else
- echo "Wrong user current user=$USER repo user=$user"
+ echo "Wrong user current user=$USER repo user=$user" 1>&2
return 1
fi
}
-_git_name() {
-# NB 17.04.23: Should replace other git_name in the future
-# NB 17.04.23: git config --local remote.origin.url generate an error when not the same user
- awk -F'= *' ' \
-match($0,/^\[([^]]+)\]/,m){ cat=match(m[1],/^remote .origin.$/) } \
-cat && /url =/{ \
- sub(/^[^:]+:/,"",$2); \
- sub(/^.*\//,"",$2); \
- sub(/(\/|\.git)$/,"",$2); \
- sub(/^.*\/$/,"",$2); \
- print $2; \
-} \
-' .git/config
-}
-
for dir in $(nb_repos); do
[ -d "$dir/.git" ] || continue
# name from git not from path
name=$(exec_user $user git_name) || continue
- # NB 17.04.23 echo "$name"
+ #echo ">>$name"; continue
+
if [ -z "$name" ]
then
echo "Can't read remote.origin.url from '$dir'"
# args filter on name
if [ -n "$filter_name" ]; then
+ #[ "$DEBUG" = "1" ] && echo "DEBUG: filter_name=$filter_name"
match=0
- for i in $@; do
+ for i in $filter_name; do
+ #[ "$DEBUG" = "1" ] && echo "DEBUG: filter_name=$filter_name $i"
case "$name" in
- $i) match=1; break ;;
- #*) echo ">$i!=$name" ;;
+ $i) match=1; break ;;
+ #*) echo ">$i!=$name" ;;
esac
done
+ #[ "$DEBUG" = "1" ] && echo "DEBUG: filter_name: match='$match' filter_name='$filter_name' name='$name'"
[ "$match" = "1" ] || continue
fi
cmd="${cmd}GIT_SSH=$GIT_SSH cd \"$dir\" && git pull"
[ "$CLEANUP" = "1" ] && cmd="$cmd && git gc"
- if [ 1 = 1 ] && ! exec_user $user git_conn_check; then
+ # NB 08.10.24 if [ 1 = 1 ] && ! exec_user $user git_conn_check; then
+ if ! exec_user $user git_conn_check; then
echo
- elif [ "$USER" = "$user" ]; then
- bash -c "$cmd"
- elif [ "$USER" = "root" ]; then
- su - $user -c "$cmd"
- else
- echo "Wrong user current user=$USER repo user=$user"
- false
+ # NB 08.10.24 elif [ "$USER" = "$user" ]; then
+ # NB 08.10.24 bash -c "$cmd"
+ # NB 08.10.24 elif [ "$USER" = "root" ]; then
+ # NB 08.10.24 su - $user -c "$cmd"
+ # NB 08.10.24 else
+ # NB 08.10.24 echo "Wrong user current user=$USER repo user=$user"
+ # NB 08.10.24 false
fi
ex_cmd=$?
[ -x bin/$name-install ] && cmd_root="$cmd_root && echo ' >$name-install' && bin/$name-install|sed 's/^/ /'"
if [ "$cmd_root" != "true" ]; then
- eval "$cmd_root"
+ # NB 08.10.24 eval "$cmd_root"
+ exec_user $user "$cmd_root"
ex_cmd_root=$?
if [ "$ex_cmd_root" -gt "0" ]; then
ex_repo=$ex_cmd_root