#!/usr/bin/env bash set -eux readonly scratch=$(mktemp -d -t tmp.XXXXXXXXXX) readonly socket=$scratch/socket readonly data=$scratch/data readonly dbname=hydra-update-dbix function finish() { set +e pg_ctl -D "$data" \ -o "-F -h '' -k \"$socket\"" \ -w stop -m immediate if [ -f "$data/postmaster.pid" ]; then pg_ctl -D "$data" \ -o "-F -h '' -k \"$socket\"" \ -w kill TERM "$(cat "$data/postmaster.pid")" fi rm -rf "$scratch" } trap finish EXIT set -e mkdir -p "$socket" initdb -D "$data" pg_ctl -D "$data" \ -o "-F -h '' -k \"${socket}\"" \ -w start createdb -h "$socket" "$dbname" psql --host "$socket" \ --set ON_ERROR_STOP=1 \ --file ./hydra.sql \ "$dbname" perl -I ../lib \ -MDBIx::Class::Schema::Loader=make_schema_at,dump_to_dir:../lib \ update-dbix.pl "dbi:Pg:dbname=$dbname;host=$socket"