80 lines
1.9 KiB
Bash
80 lines
1.9 KiB
Bash
|
preCheckHooks+=('postgresqlStart')
|
||
|
postCheckHooks+=('postgresqlStop')
|
||
|
|
||
|
|
||
|
postgresqlStart() {
|
||
|
|
||
|
# Add default environment variable values
|
||
|
#
|
||
|
# Client variables:
|
||
|
# - https://www.postgresql.org/docs/current/libpq-envars.html
|
||
|
#
|
||
|
# Server variables:
|
||
|
# - only PGDATA: https://www.postgresql.org/docs/current/creating-cluster.html
|
||
|
|
||
|
if [[ "${PGDATA:-}" == "" ]]; then
|
||
|
PGDATA="$NIX_BUILD_TOP/postgresql"
|
||
|
fi
|
||
|
export PGDATA
|
||
|
|
||
|
if [[ "${PGHOST:-}" == "" ]]; then
|
||
|
mkdir -p "$NIX_BUILD_TOP/run/postgresql"
|
||
|
PGHOST="$NIX_BUILD_TOP/run/postgresql"
|
||
|
fi
|
||
|
export PGHOST
|
||
|
|
||
|
if [[ "${PGUSER:-}" == "" ]]; then
|
||
|
PGUSER="test_user"
|
||
|
fi
|
||
|
export PGUSER
|
||
|
|
||
|
if [[ "${PGDATABASE:-}" == "" ]]; then
|
||
|
PGDATABASE="test_db"
|
||
|
fi
|
||
|
export PGDATABASE
|
||
|
|
||
|
if [[ "${postgresqlTestUserOptions:-}" == "" ]]; then
|
||
|
postgresqlTestUserOptions="LOGIN"
|
||
|
fi
|
||
|
|
||
|
if [[ "${postgresqlTestSetupSQL:-}" == "" ]]; then
|
||
|
postgresqlTestSetupSQL="$(cat <<EOF
|
||
|
CREATE ROLE "$PGUSER" $postgresqlTestUserOptions;
|
||
|
CREATE DATABASE "$PGDATABASE" OWNER '$PGUSER';
|
||
|
EOF
|
||
|
)"
|
||
|
fi
|
||
|
|
||
|
if [[ "${postgresqlTestSetupCommands:-}" == "" ]]; then
|
||
|
postgresqlTestSetupCommands='echo "$postgresqlTestSetupSQL" | PGUSER=postgres psql postgres'
|
||
|
fi
|
||
|
|
||
|
if ! type initdb >/dev/null; then
|
||
|
echo >&2 'initdb not found. Did you add postgresql to the checkInputs?'
|
||
|
false
|
||
|
fi
|
||
|
header 'initializing postgresql'
|
||
|
initdb -U postgres
|
||
|
|
||
|
# Move the socket
|
||
|
echo "unix_socket_directories = '$NIX_BUILD_TOP/run/postgresql'" >>"$PGDATA/postgresql.conf"
|
||
|
|
||
|
# TCP ports can be a problem in some sandboxes,
|
||
|
# so we disable tcp listening by default
|
||
|
if ! [[ "${postgresqlEnableTCP:-}" = 1 ]]; then
|
||
|
echo "listen_addresses = ''" >>"$PGDATA/postgresql.conf"
|
||
|
fi
|
||
|
|
||
|
header 'starting postgresql'
|
||
|
eval "${postgresqlStartCommands:-pg_ctl start}"
|
||
|
|
||
|
header 'setting up postgresql'
|
||
|
eval "$postgresqlTestSetupCommands"
|
||
|
|
||
|
}
|
||
|
|
||
|
postgresqlStop() {
|
||
|
header 'stopping postgresql'
|
||
|
pg_ctl stop
|
||
|
}
|