blob: 8a8d8593d5d2f09caaab63f302876f81ff190737 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
#! /bin/sh
# NAME
# push - Push master to all your repositores
#
# SYNOPSIS
# push
#
# ENVIRONMENT VARIABLES
# LOGNAME Specifies who you are.
#
# STOCKHOLM Specifies where stockholm can be found.
# (Default: ~/stockholm)
#
set -efu
STOCKHOLM=${STOCKHOLM-$HOME/stockholm}
my_hosts() {
(cd "$STOCKHOLM" && get "$LOGNAME" -l | jq -R -s -c 'split("\n")')
}
all_push_hosts() {
echo '{'
git remote -v \
| sed -n 's/^\(\S\+\)\s\+git@\([^:]\+\):\(\S\+\) (push)$/"\1":{"host":"\2","repo":"\3"}/;T;$!s/$/,/;p'
echo '}'
}
my_push_hosts() {
my_hosts \
| jq -r --argjson all_push_hosts "$(all_push_hosts)" \
'map(. as $host | select( $all_push_hosts | has($host)))[]'
}
my_push_hosts \
| parallel -j0 --no-notice --line-buffer --tag-string {} git push {} master
|