-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrun.sh
128 lines (100 loc) · 2.77 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
123
124
125
126
127
128
#!/bin/bash
# -----------------------------------------------
# User input
# -----------------------------------------------
function printHelp() {
echo "Wrapper for simplifying execution of Hal Server.
Usage:
$(basename $0)
[-f|--foreground]
[-h|--help]
Where:
--foreground Run Hal Server in the foreground instead of detaching a new screen.
--help Print this help message.
"
}
MODE="FOREGROUND"
until [[ $# -eq 0 ]]; do
case "$1" in
-f|--foreground)
MODE="FOREGROUND"
shift
;;
-b|--background)
MODE="BACKGROUND"
shift
;;
-h|--help)
printHelp
exit 0
;;
*)
echo "ERROR: Unknown input parameter: $1=$2"
echo ""
printHelp
exit 1
;;
esac
shift
done
# -----------------------------------------------
# Functions
# -----------------------------------------------
function startHal {
local ARGS=$1
local CLASSPATH="$(cd "${INSTALL_DIR}" && find . -name "*.jar" -type f -printf '%p:')"
CLASSPATH=${CLASSPATH::-1}
(set -x && cd "${INSTALL_DIR}" && java -classpath "${CLASSPATH}" se.hal.HalServer ${ARGS})
local EXIT_CODE=$?
return ${EXIT_CODE}
}
function createSymLink {
local file=$1
if [[ -f "./${file}" ]]; then
echo "INFO: Creating symlink for: ${file}"
ln -s -f "$(realpath "./${file}")" "${INSTALL_DIR}/${file}"
fi
}
# -----------------------------------------------
# Execute
# -----------------------------------------------
# Prepare execution
# gradle returns normally when doing ctr-c so we need to add a
# trap where the bash script exits instead of continuing.
trap 'exit 130' INT
INSTALL_DIR="."
if [[ -d "./hal-core/src" ]]; then
# We are operating on source code so build Hal
echo "INFO: Operating in source directory, will build Hal."
INSTALL_DIR="./build/install/Hal"
./gradlew --console=rich installDist
EXIT_CODE=$?
if [[ ${EXIT_CODE} -ne 0 ]]; then
exit 1
fi
echo ""
createSymLink "hal.conf"
createSymLink "hal.db"
fi
# Execute
echo ""
echo "INFO: Starting Hal in the ${MODE}."
if [[ ${MODE} == "FOREGROUND" ]]; then
EXIT_CODE=200
while [[ ${EXIT_CODE} -eq 200 ]]; do
# Restart as long as we have a exit code of 200, this allows the application to restart itself
#startHal
./gradlew run
EXIT_CODE=$?
done
elif [[ ${MODE} == "BACKGROUND" ]]; then
# Kill current session
screen -S hal -X kill
# Start new session
screen -S hal -L -d -m $(dirname "$0")/run.sh --foreground
echo "-------------------------"
screen -list
else
echo "ERROR: Unknown mode: ${MODE}"
exit 1
fi