autoserve: add script
This commit is contained in:
parent
a565f34842
commit
45baee2eef
62
autoserve
Executable file
62
autoserve
Executable file
@ -0,0 +1,62 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
binary_name=commento-ce
|
||||
|
||||
trap ctrl_c INT
|
||||
ctrl_c() {
|
||||
kill -SIGTERM $(jobs -p)
|
||||
wait $(jobs -p)
|
||||
exit
|
||||
}
|
||||
|
||||
binary_pid=
|
||||
if make; then
|
||||
source devel.env
|
||||
cd build/devel
|
||||
./$binary_name &
|
||||
binary_pid=$!
|
||||
cd ../../
|
||||
fi
|
||||
|
||||
find_cmd() {
|
||||
find . ! \( -path "*.git" -o -path "*.git/*" -o -path "*/build" -o -path "*/build/*" \) -type $1
|
||||
}
|
||||
|
||||
while true; do
|
||||
inotifywait -q --format '' -e close_write $(find_cmd f) &
|
||||
write_pid=$!
|
||||
|
||||
inotifywait -q --format '' -e create $(find_cmd d) &
|
||||
create_pid=$!
|
||||
|
||||
wait -n
|
||||
|
||||
if ps -p $write_pid >/dev/null && ps -p $create_pid >/dev/null; then
|
||||
# The wait finished because the build was successful, but our binary exited
|
||||
# prematurely. We need to back to waiting.
|
||||
kill -SIGTERM $write_pid $create_pid 2>/dev/null
|
||||
wait $write_pid $create_pid
|
||||
printf "\033[1;31m ** $binary_name failed to execute properly\n\033[0m"
|
||||
continue
|
||||
fi
|
||||
|
||||
kill -SIGTERM $write_pid $create_pid 2>/dev/null
|
||||
wait $write_pid $create_pid
|
||||
|
||||
# TODO: Is sending SIGKILL the best idea? Maybe our backend has some tasks
|
||||
# to complete before terminating gracefully?
|
||||
if [[ ! -z "$binary_pid" ]]; then
|
||||
kill -SIGINT $binary_pid
|
||||
wait $binary_pid
|
||||
fi
|
||||
|
||||
if make; then
|
||||
source devel.env
|
||||
cd build/devel
|
||||
./$binary_name &
|
||||
binary_pid=$!
|
||||
cd ../../
|
||||
else
|
||||
binary_pid=
|
||||
fi
|
||||
done
|
Loading…
Reference in New Issue
Block a user