diff options
Diffstat (limited to 'bin/common')
-rwxr-xr-x | bin/common/gt | 5 | ||||
-rwxr-xr-x | bin/common/gt-cmd | 21 |
2 files changed, 18 insertions, 8 deletions
diff --git a/bin/common/gt b/bin/common/gt index e048912..2fb5840 100755 --- a/bin/common/gt +++ b/bin/common/gt @@ -102,7 +102,6 @@ while getopts ":a:c:f:lsheu" opt; do list_repos | parallel gt-cmd {} pull else list_repos | xargs -I{} gt-cmd {} pull - fi >&2 printf 'push:\n' @@ -111,9 +110,9 @@ while getopts ":a:c:f:lsheu" opt; do awk -F: '/↑/ {print $1}' | sed "s@^~@$HOME@" | if [ "$parallel" ]; then - parallel gt-cmd {} push + parallel gt-cmd {} push else - xargs -I{} gt-cmd {} push + xargs -I{} gt-cmd {} push fi ;; h) help ;; diff --git a/bin/common/gt-cmd b/bin/common/gt-cmd index 8cf30ae..56b8df6 100755 --- a/bin/common/gt-cmd +++ b/bin/common/gt-cmd @@ -21,14 +21,25 @@ fi # path to key: ~/.ssh/<hostname>.pub # where <hostname> is the same in ssh config r="$(grep "$repo" "$REPOS" | cut -f 2 -d ' ' | cut -f 2 -d '@' | cut -f 1 -d ':')" -if { [ "$command" = "push" ] || [ "$command" = "pull" ] || [ "$command" = "fetch" ]; } && - # key not registered in agent - ! { ssh-add -L | grep "$(cat "$HOME/.ssh/$r.pub")" > /dev/null; } +if { [ "$command" = "push" ] || + [ "$command" = "pull" ] || + [ "$command" = "fetch" ]; } then - printf '%s: '\''%s'\'' not in ssh-agent\n' "$repo_pretty" "$r" - exit 1 + Keyfile="$HOME/.ssh/$r.pub" + if [ ! -f "$Keyfile" ] + then + printf '%s: no identity file '\''%s'\''\n' "$repo_pretty" "$Keyfile" + exit 1 + fi + + if ! ssh-add -L | grep "$(cat "$Keyfile")" > /dev/null + then + printf '%s: '\''%s'\'' not in ssh-agent\n' "$repo_pretty" "$r" + exit 1 + fi fi + git -C "$repo" "$command" $args >/dev/null 2>&1 [ $? -gt 0 ] && s="x" || s="o" printf '%s: %s\n' "$repo_pretty" "$s" |