]> git.phdru.name Git - dotfiles.git/commitdiff
.shellrc: define completion for cdremote
authorOleg Broytman <phd@phdru.name>
Thu, 7 Jul 2016 15:28:16 +0000 (18:28 +0300)
committerOleg Broytman <phd@phdru.name>
Thu, 7 Jul 2016 15:28:16 +0000 (18:28 +0300)
List remotes with directories as URLs.

.shellrc

index 1ac77cf020889adce2ce9de1101294bfe92e285a..d0c9c37d5921a94ca8ae9d783113dfd781689863 100644 (file)
--- a/.shellrc
+++ b/.shellrc
@@ -171,6 +171,33 @@ cdremote() {
    cd "`git config --get remote.$1.url`"
 }
 
+case "$SHELL" in
+   */bash)
+      # list remotes with URLs matching a regexp
+      list_remotes() {
+         GIT_REMOTES=""
+         for remote in `git remote`; do
+            if git config --get remote.$remote.url | grep -q "$1"; then
+               GIT_REMOTES="$GIT_REMOTES $remote"
+            fi
+         done
+         remote=""
+         unset remote
+      }
+
+      # define completion for cdremote - list remotes with directories as URLs
+      _cdremote_complete() {
+         local cur="${COMP_WORDS[COMP_CWORD]}";
+         list_remotes '^/'
+         COMPREPLY=(`compgen -W "$GIT_REMOTES" -- "$cur"`)
+         GIT_REMOTES=""
+         unset GIT_REMOTES
+      }
+
+      complete -F _cdremote_complete cdremote
+   ;;
+esac
+
 
 include()
 {