65 lines
1.4 KiB
Bash
Executable File
65 lines
1.4 KiB
Bash
Executable File
#! /bin/bash
|
|
|
|
set -e
|
|
|
|
source ./scripts/common.sh
|
|
source ./scripts/env.sh ./.env.schema
|
|
|
|
base_or_head="$1"
|
|
rev="$2"
|
|
|
|
if [[ "$base_or_head" = "head" ]]; then
|
|
port=5433
|
|
else
|
|
port=5432
|
|
fi
|
|
|
|
docker compose stop "$base_or_head" 1>/dev/null
|
|
docker compose rm -f "$base_or_head" 1>/dev/null
|
|
|
|
pg_host=${PG_HOST:-localhost}
|
|
url="postgresql://$POSTGRES_USER:$POSTGRES_PASSWORD@$pg_host:$port"
|
|
|
|
isready() {
|
|
local waited=0
|
|
until pg_isready -h "$pg_host" -p "$port" 1>/dev/null; do
|
|
if [[ "$waited" = "10" ]]; then
|
|
pwd
|
|
cat docker-compose.yml
|
|
docker compose logs base
|
|
exit 1
|
|
fi
|
|
|
|
sleep 1
|
|
echo $(( waited++ ))
|
|
done;
|
|
}
|
|
|
|
initdb() {
|
|
dropdb=$(mktemp)
|
|
echo "drop database dnim with (force);" > "$dropdb"
|
|
psql --quiet "$url/postgres" -f "$dropdb" || true
|
|
psql --quiet "$url/postgres" -c "create database dnim"
|
|
}
|
|
|
|
if [[ "$rev" = "empty" ]]; then
|
|
docker compose up -d "$base_or_head" 1>/dev/null
|
|
isready
|
|
initdb
|
|
exit 0
|
|
fi
|
|
|
|
git worktree remove --force "./$base_or_head" &>/dev/null || true
|
|
rm -rf "./$base_or_head" &>/dev/null || true
|
|
git worktree add "./$base_or_head" --detach "$rev" &>/dev/null
|
|
|
|
cp docker-compose.yml "./$base_or_head/docker-compose.yml"
|
|
cp .env.schema "./$base_or_head/.env.schema"
|
|
|
|
cd "./$base_or_head"
|
|
docker compose up -d "$base_or_head" 1>/dev/null
|
|
|
|
isready
|
|
initdb
|
|
ls ./schema/ | xargs -I{} bash -c "set -e; $(declare -f query_file); query_file \"$url/dnim\" ./schema/{}"
|