-
Notifications
You must be signed in to change notification settings - Fork 0
/
refresh-repo.sh
executable file
·131 lines (122 loc) · 5.04 KB
/
refresh-repo.sh
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#!/bin/bash
# set -eou pipefail
SCRIPT_ROOT=$(realpath $(dirname "${BASH_SOURCE[0]}"))
SCRIPT_NAME=$(basename "${BASH_SOURCE[0]}")
GITHUB_USER=${GITHUB_USER:-1gtm}
PR_BRANCH=kmodules-repo-refresher # -$(date +%s)
COMMIT_MSG="Update kmodules.xyz/client-go"
REPO_ROOT=/tmp/kmodules-repo-refresher
KMODULES_CLIENT_GO=${KMODULES_CLIENT_GO:-9963581d69a70b5675bdaa8f611aa65473764cf2}
KMODULES_MONITORING_AGENT_API=${KMODULES_MONITORING_AGENT_API:-38ca075a2dbde85cf48d84b699720925066a5f3a}
KMODULES_WEBHOOK_RUNTIME=${KMODULES_WEBHOOK_RUNTIME:-7f73c2ab318a43feb61f11696815d2abdc745af1}
KMODULES_RESOURCE_METADATA=${KMODULES_RESOURCE_METADATA:-v0.6.4}
KMODULES_CUSTOM_RESOURCES=${KMODULES_CUSTOM_RESOURCES:-72bd9e8cae6e8ca708e6e716bef12a2f58f60b96}
KMODULES_OBJECTSTORE_API=${KMODULES_OBJECTSTORE_API:-fdf68f88ea6e6b92a3c31339128b3551e2bc9742}
repo_uptodate() {
# gomodfiles=(go.mod go.sum vendor/modules.txt)
gomodfiles=(go.sum vendor/modules.txt)
changed=($(git diff --name-only))
changed+=("${gomodfiles[@]}")
# https://stackoverflow.com/a/28161520
diff=($(echo ${changed[@]} ${gomodfiles[@]} | tr ' ' '\n' | sort | uniq -u))
return ${#diff[@]}
}
refresh() {
echo "refreshing repository: $1"
rm -rf $REPO_ROOT
mkdir -p $REPO_ROOT
pushd $REPO_ROOT
git clone --no-tags --no-recurse-submodules --depth=1 https://${GITHUB_USER}:${GITHUB_TOKEN}@$1.git
cd $(ls -b1)
git checkout -b $PR_BRANCH
if [ -f go.mod ]; then
if [ "$1" != "github.com/kmodules/client-go" ]; then
go mod edit \
-require kmodules.xyz/client-go@${KMODULES_CLIENT_GO}
go mod tidy
fi
# if [ "$1" != "github.com/kmodules/monitoring-agent-api" ]; then
# go mod edit \
# -require kmodules.xyz/monitoring-agent-api@${KMODULES_MONITORING_AGENT_API}
# go mod tidy
# fi
# if [ "$1" != "github.com/kmodules/webhook-runtime" ]; then
# go mod edit \
# -require kmodules.xyz/webhook-runtime@${KMODULES_WEBHOOK_RUNTIME}
# go mod tidy
# fi
# if [ "$1" != "github.com/kmodules/resource-metadata" ]; then
# go mod edit \
# -require kmodules.xyz/resource-metadata@${KMODULES_RESOURCE_METADATA}
# go mod tidy
# fi
# if [ "$1" != "github.com/kmodules/custom-resources" ]; then
# go mod edit \
# -require kmodules.xyz/custom-resources@${KMODULES_CUSTOM_RESOURCES}
# go mod tidy
# fi
# if [ "$1" != "github.com/kmodules/objectstore-api" ]; then
# go mod edit \
# -require kmodules.xyz/objectstore-api@${KMODULES_OBJECTSTORE_API}
# go mod tidy
# fi
go mod edit \
-require=go.bytebuilders.dev/[email protected] \
-require=go.bytebuilders.dev/license-verifier/[email protected] \
-require=go.bytebuilders.dev/[email protected] \
-require=gomodules.xyz/[email protected] \
-require=gomodules.xyz/[email protected] \
-replace=github.com/satori/go.uuid=github.com/gomodules/[email protected]+incompatible \
-replace=github.com/dgrijalva/jwt-go=github.com/gomodules/[email protected]+incompatible \
-replace=github.com/golang-jwt/jwt=github.com/golang-jwt/[email protected]+incompatible \
-replace=github.com/form3tech-oss/jwt-go=github.com/form3tech-oss/[email protected]+incompatible \
-replace=helm.sh/helm/v3=github.com/kubepack/helm/[email protected] \
-replace=k8s.io/apiserver=github.com/kmodules/[email protected]
go mod tidy
go mod vendor
fi
[ -z "$2" ] || (
echo "$2"
$2 || true
# run an extra make fmt because when make gen fails, make fmt is not run
make fmt || true
)
if repo_uptodate; then
echo "Repository $1 is up-to-date."
else
git add --all
if [[ "$1" == *"stashed"* ]]; then
git commit -a -s -m "$COMMIT_MSG" -m "/cherry-pick"
else
git commit -a -s -m "$COMMIT_MSG"
fi
git push -u origin $PR_BRANCH -f
hub pull-request \
--labels automerge \
--message "$COMMIT_MSG" \
--message "Signed-off-by: $(git config --get user.name) <$(git config --get user.email)>" || true
# gh pr create \
# --base master \
# --fill \
# --label automerge \
# --reviewer tamalsaha
fi
popd
}
if [ "$#" -ne 1 ]; then
echo "Illegal number of parameters"
echo "Correct usage: $SCRIPT_NAME <path_to_repos_list>"
exit 1
fi
if [ -x $GITHUB_TOKEN ]; then
echo "Missing env variable GITHUB_TOKEN"
exit 1
fi
# ref: https://linuxize.com/post/how-to-read-a-file-line-by-line-in-bash/#using-file-descriptor
while IFS=, read -r -u9 repo cmd; do
if [ -z "$repo" ]; then
continue
fi
refresh "$repo" "$cmd"
echo "################################################################################"
done 9<$1