Improved some scripts and added new mailer projects
[jprojects-scripts.git] / fix-project-remotes.sh
1 #!/bin/bash
2
3 . ./.jprojects.sh || exit 255
4
5 UNWANTED_NAME="stick"
6 WANTED_NAME1="upstream"
7 WANTED_NAME2="daedalus"
8 WANTED_NAME3="transport"
9
10 GIT_USER="quix0r"
11 GIT_SERVER="git.mxchange.org"
12 GIT_PATH="/var/cache/git/repos"
13 GIT_BRANCH="master"
14 GIT_ORIGIN="origin"
15
16 MEDIA_BASE="/media"
17 MEDIA_NAME1="INTENSO"
18 MEDIA_NAME2="Transport"
19 MEDIA_PATH="Java Project"
20
21 for project in ${LIST}; do
22         GIT_URL1="${GIT_USER}@${GIT_SERVER}:${GIT_PATH}/${project}.git"
23         GIT_URL2="${GIT_PATH}/${project}.git"
24         GIT_URL3="${MEDIA_BASE}/${USER}/${MEDIA_NAME2}/${MEDIA_PATH}/${project}.git"
25         echo "$0: GIT_URL1='${GIT_URL1}',GIT_URL2='${GIT_URL2}',GIT_URL3='${GIT_URL3}'"
26
27         cd "${project}"
28
29         if [ "$1" = "l" ]
30         then
31                 echo "$0: Listing remotes for '${project}' ..."
32                 git remote -v
33                 cd -
34                 continue;
35         fi
36
37         REMOTES=`git remote | wc -l`
38         echo "$0: REMOTES='${REMOTES}'"
39
40         if [ "${REMOTES}" = "1" ]
41         then
42                 echo "$0: Only one remote found for '${project}'"
43
44                 REMOTE=`git remote`
45                 REMOTE_PUSH=`git remote -v | grep "push"`
46                 echo "$0: REMOTE='${REMOTE}',REMOTE_PUSH='${REMOTE_PUSH}'"
47
48                 MEDIA1=`echo "${REMOTE_PUSH}" | grep "${MEDIA_BASE}/${USER}/${MEDIA_NAME1}/"`
49                 echo "$0: MEDIA1='${MEDIA1}'"
50
51                 if [ -n "${MEDIA1}" ]
52                 then
53                         echo "$0: Found '${MEDIA_BASE}/${USER}/${MEDIA_NAME1}' remote for '${project}'."
54                         if [ "${REMOTE}" = "${GIT_ORIGIN}" ]
55                         then
56                                 echo "$0: Project '${project}' has already fixed '${GIT_ORIGIN}'."
57                         else
58                                 echo "$0: Renaming '${REMOTE}' to '${GIT_ORIGIN}' ..."
59                                 git remote rename "${REMOTE}" "${GIT_ORIGIN}" || exit 255
60                         fi
61                 else
62                         echo "$0: Not a media remote."
63                         MXCHANGE_REMOTE=`echo "${REMOTE_PUSH}" | grep "${GIT_URL1}"`
64                         echo "$0: MXCHANGE_REMOTE='${MXCHANGE_REMOTE}'"
65
66                         if [ -n "${MXCHANGE_REMOTE}" ]
67                         then
68                                 echo "$0: Found a '${GIT_SERVER}' remote."
69
70                                 if [ "${REMOTE}" != "${WANTED_NAME1}" ]
71                                 then
72                                         echo "$0: Project '${project}' has one correct '${WANTED_NAME1}'."
73                                 else
74                                         echo "$0: Renaming '${REMOTE}' to '${WANTED_NAME1}' ..."
75                                         git remote rename "${REMOTE}" "${WANTED_NAME1}" || exit 255
76                                 fi
77
78                                 echo "$0: Adding '${GIT_ORIGIN}' to '${project}' ..."
79                                 git remote add "${GIT_ORIGIN}" "${MEDIA_BASE}/${USER}/${MEDIA_NAME1}/${MEDIA_PATH}/${project}.git" --track "${GIT_BRANCH}" || exit 255
80                         else
81                                 echo "$0: Unknown remote '${REMOTE_PUSH}' found. Exiting ..."
82                                 exit 1
83                         fi
84                 fi
85         fi
86
87         UNWANTED_REMOTE=`git remote | grep "${UNWANTED_NAME}"`
88         echo "$0: UNWANTED_REMOTE='${UNWANTED_REMOTE}'"
89
90         if [ -n "${UNWANTED_REMOTE}" ]
91         then
92                 echo "$0: Found remote '${UNWANTED_NAME}' in '${project}'. Renaming '${GIT_ORIGIN}'->'${WANTED_NAME1}' and '${UNWANTED_NAME}'->'${GIT_ORIGIN}' ..."
93
94                 UPSTREAM_REMOTE=`git remote | grep "${WANTED_NAME1}"`
95                 echo "$0: UPSTREAM_REMOTE='${UPSTREAM_REMOTE}'"
96
97                 if [ -n "${UPSTREAM_REMOTE}" ]
98                 then
99                         echo "$0: Remotes '${UNWANTED_NAME}' and '${WANTED_NAME1}' exist! Removing '${WANTED_NAME1}' ..."
100                         git remote rm "${WANTED_NAME1}" || exit 255
101                 fi
102
103                 git remote rename "${GIT_ORIGIN}" "${WANTED_NAME1}" || exit 255
104                 git remote rename "${UNWANTED_NAME}" "${GIT_ORIGIN}" || exit 255
105         else
106                 echo "$0: No unwanted '${UNWANTED_NAME}' remote in '${project}' ..."
107                 UPSTREAM_REMOTE1=`git remote | grep "${WANTED_NAME1}"`
108                 UPSTREAM_REMOTE2=`git remote | grep "${WANTED_NAME2}"`
109                 UPSTREAM_REMOTE3=`git remote | grep "${WANTED_NAME3}"`
110                 echo "$0: UPSTREAM_REMOTE1='${UPSTREAM_REMOTE1}',UPSTREAM_REMOTE2='${UPSTREAM_REMOTE2}',UPSTREAM_REMOTE3='${UPSTREAM_REMOTE3}'"
111
112                 if [ -n "${UPSTREAM_REMOTE1}" ]
113                 then
114                         echo "$0: Remote '${WANTED_NAME1}' found in '${project}'."
115                 else
116                         echo "$0: No wanted '${WANTED_NAME1}' in '${project}'. Adding ..."
117                         git remote add "${WANTED_NAME1}" "${GIT_URL1}" --track "${GIT_BRANCH}" || exit 255
118                 fi
119
120                 if [ -n "${UPSTREAM_REMOTE2}" ]
121                 then
122                         echo "$0: Remote '${WANTED_NAME2}' found in '${project}'."
123                 elif [ ! -d "${GIT_URL2}" ]
124                 then
125                         echo "$0: Remote '${WANTED_NAME2}' cannot be created, path '${GIT_URL2}' missing."
126                         exit 1
127                 else
128                         echo "$0: No wanted '${WANTED_NAME2}' in '${project}'. Adding ..."
129                         git remote add "${WANTED_NAME2}" "${GIT_URL2}" --track "${GIT_BRANCH}" || exit 255
130                 fi
131
132                 if [ -n "${UPSTREAM_REMOTE3}" ]
133                 then
134                         echo "$0: Remote '${WANTED_NAME3}' found in '${project}'."
135                 elif [ ! -d "${GIT_URL3}" ]
136                 then
137                         echo "$0: Remote '${WANTED_NAME3}' cannot be created, path '${GIT_URL3}' missing."
138                         exit 1
139                 else
140                         echo "$0: No wanted '${WANTED_NAME3}' in '${project}'. Adding ..."
141                         git remote add "${WANTED_NAME3}" "${GIT_URL3}" --track "${GIT_BRANCH}" || exit 255
142                 fi
143         fi
144
145         cd -
146 done