summaryrefslogtreecommitdiff
path: root/temp-postgres.sh
diff options
context:
space:
mode:
Diffstat (limited to 'temp-postgres.sh')
-rwxr-xr-xtemp-postgres.sh129
1 files changed, 0 insertions, 129 deletions
diff --git a/temp-postgres.sh b/temp-postgres.sh
deleted file mode 100755
index e9a901c..0000000
--- a/temp-postgres.sh
+++ /dev/null
@@ -1,129 +0,0 @@
-#! /bin/sh
-
-# Copyright (c) 2019, 2020, 2022, 2026 Stefan Kreutz <mail@skreutz.com>
-#
-# Permission to use, copy, modify, and distribute this software for any purpose
-# with or without fee is hereby granted, provided that the above copyright
-# notice and this permission notice appear in all copies.
-#
-# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
-# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-# AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
-# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-# PERFORMANCE OF THIS SOFTWARE.
-
-set -o nounset
-
-# Remove the temporary directory before exiting.
-trap 'quit' INT
-quit() {
- code="${1:-0}"
- [ -z "$postgres_pid" ] || kill -TERM "$postgres_pid"
- wait
- rm -rf "${tmpdir-}" || {
- ( >&2 printf "temp-postgres: failed to remove temporary directory: %s\\n" "${tmpdir}" )
- [ "${code}" -ne 0 ] || code=1
- }
- [ -z "${symlink:-}" ] || ! [ -L "$symlink" ] || unlink "$symlink" || {
- ( >&2 printf "temp-postgres: failed to unlink %s\\n" "$symlink" )
- [ "${code}" -ne 0 ] || code=1
- }
- exit "${code}"
-}
-
-dbname="$( id -un )"
-username="$( id -un )"
-
-while [ $# -gt 0 ] ; do
- case "$1" in
- -h|--help)
- echo "Usage: temp-postgres [-h|--help] [-d|--dbname <dbname>] [-u|--username <username>] [--symlink <path>] [--] [<command>]"
- exit
- ;;
- -d|--dbname)
- dbname="$2"
- shift 2
- ;;
- -u|--username)
- username="$2"
- shift 2
- ;;
- --symlink)
- symlink="$2"
- shift 2
- ;;
- --)
- shift
- break
- ;;
- -*)
- ( >&2 echo "undefined option: $1" )
- exit 2
- ;;
- *)
- break
- ;;
- esac
-done
-
-# Create a temporary directory
-tmpdir="$( mktemp -d )" || {
- ( >&2 printf "temp-postgres: failed to create temporary directory\\n" )
- quit 1
-}
-
-# Initialize the directory
-initdb --pgdata="${tmpdir}" --username="${username}" || {
- ( >&2 printf "temp-postgres: failed to initialize database\\n" )
- quit 1
-}
-
-# Serve the directory
-( postgres -h "" -k "${tmpdir}" -D "${tmpdir}" </dev/null ) &
-postgres_pid=$!
-
-# Test the connection
-sleep 1
-pg_isready --host="${tmpdir}" --dbname="nope" --username="${username}" --timeout=10 || {
- ( >&2 printf "temp-postgres: failed to connect to server\\n" )
- quit 1
-}
-
-# Create the database
-createdb --host="${tmpdir}" --username="${username}" --no-password "${dbname}" || {
- ( >&2 printf "temp-postgres: failed to create database\\n" )
- quit 1
-}
-
-if [ -n "${symlink:-}" ] ; then
- ln -sf "${tmpdir}" "$symlink" || {
- ( >&2 printf "temp-postgres: failed to create symlink %s\\n" "$symlink" )
- quit 1
- }
-fi
-
-printf '
-Connect with the following command:
-
-\tpsql --host "%s" --dbname "%s" --username "%s"
-
-' "$tmpdir" "$dbname" "$username"
-
-if [ $# -eq 0 ] ; then
- wait
-else
- export PGHOST="$tmpdir"
- export PGDATABASE="$dbname"
- export PGUSER="$username"
- export DATABASE_URI="postgresql:${dbname}?host=${tmpdir}&user=${username}"
- export DATABASE_URL="$DATABASE_URI"
-
- "$@" || {
- code=$?
- ( >&2 echo "temp-postgres: command exited ${code}" )
- quit "$code"
- }
- quit
-fi
Generated by cgit. See skreutz.com for my tech blog and contact information.