-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrun.sh
executable file
·122 lines (106 loc) · 3 KB
/
run.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
#!/usr/bin/env bash
set -e
ROOT_PATH=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
PRESERVE_KEYCLOAK=false
WITH_UI=true
REBUILD_UI=true
POSITIONAL=()
while [[ $# -gt 0 ]]
do
key="$1"
case ${key} in
--preserve-keycloak)
PRESERVE_KEYCLOAK=true
shift
;;
--reuse-keycloak)
REUSE_KEYCLOAK=true
shift
;;
--no-ui)
WITH_UI=false
shift
;;
--no-rebuild-ui)
REBUILD_UI=false
shift
;;
--debug)
DEBUG=true
DEBUG_PORT=40000
shift
;;
--*)
echo "Unknown flag ${1}"
exit 1
;;
esac
done
set -- "${POSITIONAL[@]}"
set -a
. ./.env
set +a
KEYCLOAK_CONTAINER="taskboard-keycloak"
KEYCLOAK_PORT="8086"
KEYCLOAK_VERSION="25.0.6"
function clean() {
if [[ ${DEBUG} == true ]]; then
echo "Remove binary"
rm ${ROOT_PATH}/taskboard
fi
if [[ ${PRESERVE_KEYCLOAK} = false ]]; then
echo "Remove Keycloak container"
docker rm --force ${KEYCLOAK_CONTAINER}
else
echo "Keeping Keycloak container running"
fi
}
trap clean EXIT
# Ensure public and tasks folders exists
mkdir ${ROOT_PATH}/public || true
mkdir ${ROOT_PATH}/tasks || true
if [[ ${REUSE_KEYCLOAK} = true ]]; then
echo "Keycloak is reused."
else
echo "Create Keycloak container ${KEYCLOAK_CONTAINER} on ${KEYCLOAK_PORT} ..."
docker run -d --name ${KEYCLOAK_CONTAINER} \
-e KC_BOOTSTRAP_ADMIN_USERNAME=${KEYCLOAK_ADMIN} \
-e KC_BOOTSTRAP_ADMIN_PASSWORD=${KEYCLOAK_ADMIN_PASSWORD} \
-p ${KEYCLOAK_PORT}:${KEYCLOAK_PORT} \
-v ./keycloak:/opt/keycloak/data/import \
keycloak/keycloak:${KEYCLOAK_VERSION} \
start-dev --http-port ${KEYCLOAK_PORT} --import-realm
fi
if [[ ${WITH_UI} = true ]]; then
if [[ ${REBUILD_UI} = true ]]; then
echo "Rebuilding UI ..."
if [ ! -d "${ROOT_PATH}/ui/webapp/libs/keycloak-js" ]; then
echo "${ROOT_PATH}/ui/webapp/libs/keycloak-js is missing. Fetching it ..."
sh update-keycloak-js.sh
else
echo "${ROOT_PATH}/ui/webapp/libs/keycloak-js is available, using the local copy."
fi
rm -fR ${ROOT_PATH}/public/*
cd ${ROOT_PATH}/ui
rm -fR node_modules
rm -f package-lock.json
npm install
npm run build
mv ${ROOT_PATH}/ui/dist/* ${ROOT_PATH}/public/.
cp ${ROOT_PATH}/ui/sap-ui-version.json ${ROOT_PATH}/public/resources/.
cd ${ROOT_PATH}
echo "UI was rebuilded!"
else
echo "UI not rebuilded!"
fi
else
echo "Starting without UI."
fi
echo "Starting application ..."
if [[ ${DEBUG} == true ]]; then
echo "Debug enabled on port ${DEBUG_PORT}"
CGO_ENABLED=0 go build -gcflags="all=-N -l" .
dlv --listen=:${DEBUG_PORT} --headless=true --api-version=2 exec taskboard
else
go run main.go
fi