postgresqlTestHook: init
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user