]> git.nbdom.net Git - nb.git/commitdiff
etc/profile.d/nb.sh
authorNicolas Boisselier <nicolas.boisselier@gmail.com>
Fri, 25 Oct 2024 08:50:21 +0000 (10:50 +0200)
committerNicolas Boisselier <nicolas.boisselier@gmail.com>
Fri, 25 Oct 2024 08:50:21 +0000 (10:50 +0200)
etc/profile.d/nb.sh

index 4375300d34806d0580de685f522992f0babbb431..106e210b4efb6d9e071b3d0e0913740e79cb8d38 100644 (file)
@@ -18,6 +18,19 @@ nb_repos_commit_push() {
        cd "$pwd"
 }
 
+nb_repo_su_exec() {
+       local usage="nb_repo_su_exec REPO_DIR COMMAND"
+       local repo="${1:?$usage}"; shift
+       local u=$( ls -1dl "$repo" | awk '{print $3}' )
+       if [ "$u" != "$USER" ]; then
+               sudo -i -u "$u" $@
+               #return 0
+       else
+               $@
+               #return 1
+       fi
+}
+
 nb_repos_status() {
        shell_help "List repos git status" "$@" && return
        local status i branch
@@ -30,9 +43,8 @@ nb_repos_status() {
                [ -n "$repo_filter" -a "$repo_filter" != "$repo" ] && continue
                cd "$repo" || continue
 
-               local u=$( ls -1dl "$repo/.git" | awk '{print $3}' )
+               local u=$( ls -1dl "$repo" | awk '{print $3}' )
                if [ "$u" != "$USER" ]; then
-                       #printf "%s %s\n" "$repo" "WRONG OWNER"
                        sudo -i -u "$u" nb_repos_status "$repo"
                        [ "$?" != "0" ] && ret=1
                        continue
@@ -164,24 +176,22 @@ nb_test() {
 }
 
 nb_repos_grep() {
-       nb_repos_ls_files | while read i; do
-               grep "$@" -HsIE "$i"
+       nb_repos | while read repo; do
+               nb_repo_su_exec "$repo" git grep --full-name -HIE "$@" | sed "s|^|$repo/|"
        done
+       # NB 25.10.24 nb_repos_ls_files | while read i; do
+               # NB 25.10.24 grep "$@" -HsIE "$i"
+       # NB 25.10.24 done
 }
 
 nb_repos_ls_files() {
        nb_repos | while read r; do
-               git -C "$r" ls-files --full-name 2>/dev/null| while read i; do
-                       i="$r/$i"
-                       [ ! -e "$i" -o -d "$i" ] && continue
-                       echo $i
-               done
-       done
-       return 0
-       local i
-       for i in `nb_repos`; do
-               #git -C "$i" ls-files | sed -e "s!^!$i/!" -e "s!^//\+!/!"
-               git -C "$i" ls-files --full-name | sed -e "s!^!$i/!" -e "s!^//\+!/!"
+               nb_repo_su_exec "$r" git -C "$r" ls-files --full-name --exclude='*/' 2>/dev/null | sed "s|^|$r/|"
+               # NB 25.10.24 git -C "$r" ls-files --full-name 2>/dev/null| while read i; do
+                       # NB 25.10.24 i="$r/$i"
+                       # NB 25.10.24 [ ! -e "$i" -o -d "$i" ] && continue
+                       # NB 25.10.24 echo $i
+               # NB 25.10.24 done
        done
 }