summaryrefslogtreecommitdiff
path: root/build/init
diff options
context:
space:
mode:
authorFreya Murphy <freya@freyacat.org>2024-12-23 11:13:27 -0500
committerFreya Murphy <freya@freyacat.org>2024-12-23 11:13:27 -0500
commit5a2ba9c2e7605bb788bc406184547d22c6436867 (patch)
treecbd988d534e8a8593a31d70571222443f80da0b3 /build/init
parentfix about modal (diff)
downloadxssbook2-5a2ba9c2e7605bb788bc406184547d22c6436867.tar.gz
xssbook2-5a2ba9c2e7605bb788bc406184547d22c6436867.tar.bz2
xssbook2-5a2ba9c2e7605bb788bc406184547d22c6436867.zip
v2.1.0, refactor w/ crimson
Diffstat (limited to 'build/init')
-rw-r--r--build/init/Dockerfile21
-rwxr-xr-xbuild/init/init148
2 files changed, 0 insertions, 169 deletions
diff --git a/build/init/Dockerfile b/build/init/Dockerfile
deleted file mode 100644
index 98eb285..0000000
--- a/build/init/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-FROM alpine:3.19
-
-# install packages
-RUN apk add --no-cache postgresql16-client tini shadow
-RUN rm -fr /var/cache/apk/*
-
-# setup main user
-RUN adduser -D init
-RUN groupmod --gid 1000 init
-RUN usermod --uid 1000 init
-
-# copy scripts
-COPY ./init /usr/local/bin/init
-
-# remove build packages
-RUN apk del shadow
-
-# do the
-USER init
-ENTRYPOINT ["/sbin/tini", "--"]
-CMD ["/usr/local/bin/init"]
diff --git a/build/init/init b/build/init/init
deleted file mode 100755
index c8dd3f0..0000000
--- a/build/init/init
+++ /dev/null
@@ -1,148 +0,0 @@
-#!/bin/sh
-
-errors=$(mktemp)
-
-step() {
- printf '\x1b[34;1m>> %s\x1b[0m\n' "$*"
-}
-
-error() {
- {
- printf '\x1b[31;1merror: \x1b[0m%s\n' "$*";
- grep -v 'current transaction is aborted' < "$errors";
- printf "\x1b[31m;1error: \x1b[0mAborting migrations, fix file(s) then restart process.";
- } 1>&2;
-}
-
-try() {
- "$@" 2> "$errors";
- count=$(grep -c 'ERROR' < "$errors")
- if [ "$count" -eq 0 ]; then
- return 0;
- else
- return 1;
- fi
-}
-
-export PGPASSWORD="$POSTGRES_PASSWORD"
-
-psql() {
- /usr/bin/psql \
- -h db \
- -p 5432 \
- -d "$POSTGRES_DB" \
- -U "$POSTGRES_USER" \
- "$@"
-}
-
-pg_isready() {
- /usr/bin/pg_isready \
- -h db \
- -p 5432 \
- -d "$POSTGRES_DB" \
- -U "$POSTGRES_USER"
-}
-
-curr_revision() {
- psql -qtAX -f /db/rev.sql;
-}
-
-wait_until_ready() {
- step 'Checking if the database is ready...';
- while true; do
- pg_isready;
- code=$?;
- if [ $code -eq 0 ]; then
- break;
- fi
- sleep 3;
- done
-}
-
-run_migrations() {
- i="$1"
- while true; do
- name=$(printf "%04d" "$i");
- file="/db/migrations/$name.sql"
- if [ -f "$file" ]; then
- if try psql -f "$file"; then
- i=$((i+1));
- continue;
- else
- error "An error occoured during a migration (rev $name)"
- return 1;
- fi
- else
- return 0;
- fi
- done
-}
-
-init_api() {
- if try psql -f /db/rest/rest.sql; then
- return 0;
- else
- error "An error occoured during api initialization"
- return 1;
- fi
-}
-
-update_jwt() {
- if try psql -c "UPDATE sys.database_info SET jwt_secret = '$JWT_SECRET' WHERE name = current_database();"; then
- return 0;
- else
- error "Could not update JWT"
- return 1;
- fi
-}
-
-load_ext() {
- psql -qtAX -f /db/ext.sql;
-}
-
-init () {
- # reomve ready status
- # so php ignores requests
- rm -f /status/ready
-
- step 'Waiting for database';
- # make sure the database is running
- # before we run any requests
- wait_until_ready;
- step 'Database ready';
-
- step 'Loading extensions';
- # Make sure extensions are loaded
- load_ext;
-
- step 'Peforming migrations';
- # get the current revision
- REV=$(curr_revision);
- step "Database at revision: $REV"
- # run each migration that is
- # higher than our current revision
- if ! run_migrations "$REV"; then
- return 1;
- fi
-
- step 'Initalizing the api';
- # reinit the api schema for
- # postgrest
- if ! init_api; then
- return 1;
- fi
-
- step 'Updating JWT secret';
- # make sure postgres has the corrent
- # jwt secret
- if ! update_jwt; then
- return 1;
- fi
-
- step 'Database is initialized'
- # database is ready
- touch /status/ready
-}
-
-init
-rm "$errors"