26 lines
464 B
Bash
Executable File
26 lines
464 B
Bash
Executable File
#!/usr/bin/env bash
|
|
set -e
|
|
APP_CMD="$(realpath "$BASH_SOURCE")"
|
|
APP_DIR="$(dirname "$APP_CMD")"
|
|
source "$APP_DIR/env"
|
|
source "$APP_DIR/cmd/trap"
|
|
|
|
echo "Locking '/run/$APP_NAME/lock' ..." >&2
|
|
mkdir -p "/run/$APP_NAME"
|
|
exec 100>"/run/$APP_NAME/lock"
|
|
set +e
|
|
while true; do
|
|
source "$APP_DIR/cmd/trap"
|
|
if flock -e -n 100; then
|
|
break
|
|
fi
|
|
source "$APP_DIR/cmd/untrap"
|
|
sleep 1
|
|
done
|
|
|
|
set +e
|
|
bash "$APP_DIR/cmd/main" "${@}"
|
|
EXITCODE="$?"
|
|
flock -u 100
|
|
exit "$EXITCODE"
|