-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcontrol.sh
executable file
·175 lines (146 loc) · 5.4 KB
/
control.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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
#!/bin/bash
set -a
source .env
set +a
WORKDIR=$(pwd)
export GIT_TERMINAL_PROMPT=0
function usage() {
cat <<USAGE
Usage:
$0 [command] [options]
Commands:
install Install necessary services
build [service] Build all services (or provided)
rebuild [service] Rebuild and run provided service (it is convenient when work with a specific service)
run [d] Run all services (d - detach mode)
stop Stop all services
help Show usage information
USAGE
exit 1
}
function run_usage() {
cat <<USAGE
Usage:
$0 run [-d]
Options:
d Detached run. Run docker containers in detached mod.
USAGE
exit 1
}
# ==============================================
# COMPONENTS PREPARE
# clone / pull any component
function prepare_component() {
REPO=$1
NAME=$2
BRANCH=$3
echo -e "\033[1m[$NAME]\033[0m":
if [ -e "$NAME" ]; then
cd $NAME
git pull
else
if [ "$BRANCH" ]; then
git clone --branch "$BRANCH" "$REPO" "$NAME"
else
git clone "$REPO" "$NAME"
fi
fi
cd $WORKDIR
}
# ==============================================
# UTILITIES
# check if repo ever exist and clone
function clone_git_repo() {
REPO=$1
NAME=$2
if git ls-remote --exit-code $REPO > /dev/null 2>&1; then
# if repo exist - clone
git clone --depth=1 "$REPO" "$NAME"
else
echo "Repo: [$REPO] not exist."
exit 1
fi
}
# ==============================================
# COMMAND SWITCHER
case $1 in
install)
if [ "$2" == "--dev" ]; then
prepare_component [email protected]:semantic-pie/pie-tunes-domain domain
prepare_component [email protected]:semantic-pie/pie-tunes-streaming streaming
prepare_component [email protected]:semantic-pie/pie-tunes-ui-vite ui
prepare_component [email protected]:semantic-pie/pie-tunes-snoopy snoopy
prepare_component [email protected]:semantic-pie/pie-tunes-recommendation-service recommendations
else
prepare_component https://github.com/semantic-pie/pie-tunes-domain domain
prepare_component https://github.com/semantic-pie/pie-tunes-streaming streaming
prepare_component https://github.com/semantic-pie/pie-tunes-ui-vite ui
prepare_component https://github.com/semantic-pie/pie-tunes-snoopy snoopy
prepare_component https://github.com/semantic-pie/pie-tunes-recommendation-service recommendations
fi
;;
build)
shift 1;
if [ -z "$1" ]; then
./domain/docker/build-image.sh
./recommendations/docker/build-image.sh
./streaming/docker/build-image.sh
./snoopy/docker/build-image.sh
docker compose -f ./ui/docker/docker-compose.yaml build
else
echo "[${1}] Start building..."
eval "./${1}/docker/build-image.sh" && echo "[${1}]"
fi
;;
run)
shift 1;
case $1 in
d) DETACHED=1 ;;
h) run_usage ;;
\?) echo "Invalid option -$OPTARG" && run_usage
exit 1
;;
esac
if ! $DETACHED ; then
echo "STARTING..."
docker compose -f ./db/docker-compose.yaml -f ./ui/docker/docker-compose.yaml -f ./domain/docker/docker-compose.yaml -f ./streaming/docker/docker-compose.yaml -f ./snoopy/docker/docker-compose.yaml -f ./recommendations/docker/docker-compose.yaml up -d
else
docker compose -f ./db/docker-compose.yaml -f ./ui/docker/docker-compose.yaml -f ./domain/docker/docker-compose.yaml -f ./streaming/docker/docker-compose.yaml -f ./snoopy/docker/docker-compose.yaml -f ./recommendations/docker/docker-compose.yaml up
fi
;;
stop)
shift 1;
docker compose -f ./db/docker-compose.yaml -f ./ui/docker/docker-compose.yaml -f ./domain/docker/docker-compose.yaml -f ./streaming/docker/docker-compose.yaml -f ./snoopy/docker/docker-compose.yaml -f ./recommendations/docker/docker-compose.yaml down
echo "[DELETED]"
;;
rebuild)
shift 1;
if [ -z "$1" ]; then
echo "Provide service name. ./control.sh rebuild [domain|recommendations|snoopy|streamin|ui]"
else
docker compose -f ./db/docker-compose.yaml -f ./ui/docker/docker-compose.yaml -f ./domain/docker/docker-compose.yaml -f ./streaming/docker/docker-compose.yaml -f ./snoopy/docker/docker-compose.yaml -f ./recommendations/docker/docker-compose.yaml down
echo "[${1}] Start building..."
eval "./${1}/docker/build-image.sh" && echo "[${1}]"
docker compose -f ./db/docker-compose.yaml -f ./ui/docker/docker-compose.yaml -f ./domain/docker/docker-compose.yaml -f ./streaming/docker/docker-compose.yaml -f ./snoopy/docker/docker-compose.yaml -f ./recommendations/docker/docker-compose.yaml up -d
fi
;;
restart)
shift 1;
docker compose -f ./db/docker-compose.yaml -f ./ui/docker/docker-compose.yaml -f ./domain/docker/docker-compose.yaml -f ./streaming/docker/docker-compose.yaml -f ./snoopy/docker/docker-compose.yaml -f ./recommendations/docker/docker-compose.yaml down
docker compose -f ./db/docker-compose.yaml -f ./ui/docker/docker-compose.yaml -f ./domain/docker/docker-compose.yaml -f ./streaming/docker/docker-compose.yaml -f ./snoopy/docker/docker-compose.yaml -f ./recommendations/docker/docker-compose.yaml up -d
echo "[RESTARTED]"
;;
--help)
usage
;;
help)
usage
;;
-h)
usage
;;
# All invalid commands will invoke usage page
*)
usage
;;
esac