From: Nicolas Boisselier Date: Tue, 8 Oct 2024 09:37:17 +0000 (+0200) Subject: REPO-install as user X-Git-Url: https://git.nbdom.net/?a=commitdiff_plain;h=ede659f68f42e68bf0505343da05bd6ee50ed5a1;p=nb.git REPO-install as user --- diff --git a/bin/nb-update b/bin/nb-update index 3df8a194..7f6d2443 100755 --- a/bin/nb-update +++ b/bin/nb-update @@ -10,8 +10,14 @@ NAME="$(basename "${0}")" 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="$@" ##################################################################### # @@ -49,36 +55,24 @@ export GIT_SSH="$TMP" # # 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 @@ -97,7 +91,8 @@ for dir in $(nb_repos); do # 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'" @@ -107,13 +102,16 @@ for dir in $(nb_repos); do # 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 @@ -150,15 +148,16 @@ for dir in $(nb_repos); do 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=$? @@ -175,7 +174,8 @@ for dir in $(nb_repos); do [ -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