bornhack-website/scripts/schemagif.sh

70 lines
2.3 KiB
Bash
Executable File

#!/bin/sh
#################################
# Loop over migrations in the
# BornHack website project, apply
# one by one, and run
# postgresql_autodoc for each.
#
# Use the generated .dot files
# to generate PNGs and watermark
# the PNG with the migration name.
#
# Finally use $whatever to combine
# all the PNGs to an animation and
# marvel at the ingenuity of Man.
#
# This scripts makes a million
# assumptions about the local env.
# and installed packages. Enjoy!
#
# /Tykling, April 2018
#################################
#set -x
# warn the user
read -p "WARNING: This scripts deletes and recreates the local pg database named bornhackdb several times. Continue? "
# wipe database
sudo su postgres -c "dropdb bornhackdb; createdb -O bornhack bornhackdb"
# run migrate with --fake to get list of migrations
MIGRATIONS=$(python manage.py migrate --fake | grep FAKED | cut -d " " -f 4 | cut -d "." -f 1-2)
# wipe database again
sudo su postgres -c "dropdb bornhackdb; createdb -O bornhack bornhackdb"
# create output folder
sudo rm -rf postgres_autodoc
mkdir postgres_autodoc
sudo chown postgres:postgres postgres_autodoc
# loop over migrations
COUNTER=0
for MIGRATION in $MIGRATIONS; do
COUNTER=$(( $COUNTER + 1 ))
ALFACOUNTER=$(printf "%04d" $COUNTER)
echo "processing migration #${COUNTER}: $MIG"
APP=$(echo $MIGRATION | cut -d "." -f 1)
MIG=$(echo $MIGRATION | cut -d "." -f 2)
echo "--- running migration: APP: $APP MIGRATION: $MIG ..."
python manage.py migrate --no-input $APP $MIG
echo "--- running postgresql_autodoc and dot..."
cd postgres_autodoc
sudo su postgres -c "mkdir ${ALFACOUNTER}-$MIGRATION"
cd "${ALFACOUNTER}-${MIGRATION}"
# run postgresql_autodoc
sudo su postgres -c "postgresql_autodoc -d bornhackdb"
# create PNG from .dot file
sudo su postgres -c "dot -Tpng bornhackdb.dot -o bornhackdb.png"
# create watermark image with migration name as white on black text
sudo su postgres -c "convert -background none -undercolor black -fill white -font DejaVu-Sans-Mono-Bold -size 5316x4260 -pointsize 72 -gravity SouthEast label:${ALFACOUNTER}-${MIGRATION} background.png"
# combine the images
sudo su postgres -c "composite -gravity center bornhackdb.png background.png final.png"
cd ..
cd ..
done