34 lines
778 B
Bash
34 lines
778 B
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
: "${PERSIST_MOCK_LOG:=/tmp/persist-mock.log}"
|
|
: "${PERSIST_MOCK_FAIL:=0}"
|
|
: "${PERSIST_MOCK_DELAY_SECS:=0}"
|
|
: "${PERSIST_MOCK_ACTIVE_DIR:=}"
|
|
: "${PERSIST_MOCK_FAIL_ON_CONCURRENT:=0}"
|
|
|
|
printf '%s %s\n' "$(basename -- "$0")" "$*" >>"${PERSIST_MOCK_LOG}"
|
|
|
|
cleanup() {
|
|
[[ -n ${PERSIST_MOCK_ACTIVE_DIR} ]] || return 0
|
|
rmdir "${PERSIST_MOCK_ACTIVE_DIR}" 2>/dev/null || true
|
|
}
|
|
|
|
if [[ -n ${PERSIST_MOCK_ACTIVE_DIR} ]]; then
|
|
if ! mkdir "${PERSIST_MOCK_ACTIVE_DIR}" 2>/dev/null; then
|
|
if [[ ${PERSIST_MOCK_FAIL_ON_CONCURRENT} == 1 ]]; then
|
|
exit 1
|
|
fi
|
|
else
|
|
trap cleanup EXIT
|
|
fi
|
|
fi
|
|
|
|
if [[ ${PERSIST_MOCK_DELAY_SECS} != 0 ]]; then
|
|
sleep "${PERSIST_MOCK_DELAY_SECS}"
|
|
fi
|
|
|
|
if [[ ${PERSIST_MOCK_FAIL} == 1 ]]; then
|
|
exit 1
|
|
fi
|