From 46a3d2ba70decd1931e13c190bfa49217e57718d Mon Sep 17 00:00:00 2001 From: Stefan Kreutz Date: Thu, 30 Apr 2026 10:10:46 +0200 Subject: Rewrite in async Rust --- temp-postgres.sh | 129 ------------------------------------------------------- 1 file changed, 129 deletions(-) delete mode 100755 temp-postgres.sh (limited to 'temp-postgres.sh') 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 -# -# 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 ] [-u|--username ] [--symlink ] [--] []" - 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}" &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 -- cgit v1.3