cl-deck-builder2/contrib.sh
2024-01-21 02:35:35 -05:00

124 lines
3.2 KiB
Bash

#!/bin/bash
# Start some stuff: Sidekiq Web UI, collectd web UI, MariaDB container, Redis container.
#
# Looks like shell scripts are also going into here. You may additionally backup_database.
#
# Hey it's starting to turn into a real deploy script!
set -euox
DOCKER=podman
MARIADB_IMAGE=localhost/alpine-mariadb
REDIS_IMAGE=localhost/redis-7.2-rc-alpine
SCHEMACRAWLER_DIR=$HOME/schemacrawler-16.20.4-bin
function message(){
plus="+"
[[ $1 -ne 0 ]] && plus=-
shift
echo "[${plus}] $@"
}
# This will probably either go away or be moved to mariadb database as we migrate (eventually)
function backup_database() {
shift
running_container=
if [ $# -eq 0 ]
then
running_container=$(${DOCKER} ps --format '{{.Image}} {{.Names}}' | grep cl-deck-builder2 | awk '{print $2}')
else
running_container="$1"
fi
if [ "x$running_container" = "x" ]
then
message 1 "deck builder container not running?"
else
message 0 "found $running_container"
message 0 "copying database $running_container:/home/quicklisp/quicklisp/local-projects/cl-deck-builder2/deck_builder.sqlite3"
$DOCKER cp "$running_container:/home/quicklisp/quicklisp/local-projects/cl-deck-builder2/deck_builder.sqlite3" \
~/sqlite3/$(date '+%Y-%m-%d')-deck_builder.sqlite3
ls -l ~/sqlite3/$(date '+%Y-%m-%d')-deck_builder.sqlite3
fi
}
function psychiq_up(){
ps -C rackup >/dev/null
if [ $? -ne 0 ]
then
message 0 "Starting Psychiq Web UI"
rackup /home/user/code/cl-deck-builder2/ruby/config.ru &
else
message 1 "Psychiq Web UI already running."
fi
}
function collectd_up() {
ps -C python3 >/dev/null
if [ $? -ne 0 ]
then
message 0 "Starting collectd Web UI"
pushd /home/user/code/alpine-collectd-web/
python3 runserver.py &
popd
else
message 1 "collectd Web UI already running."
fi
}
function mariadb_up (){
mkdir -p ~/mariadb
$DOCKER ps 2>&1| grep 3306 2>&1>/dev/null
if [ $? -ne 0 ]
then
$DOCKER run --restart always -d -P -p 3306:3306 -v $HOME/mariadb:/var/lib/mysql $MARIADB_IMAGE
else
message 1 "mariadb already running."
fi
}
function redis_up(){
mkdir -p ~/redis
$DOCKER ps 2>&1| grep 6379 2>&1>/dev/null
if [ $? -ne 0 ]
then
$DOCKER run --restart always -d -P -p 6379:6379 -v $HOME/redis:/data $REDIS_IMAGE
else
message 1 "redis already running."
fi
}
function schemacrawler(){
ORIG_DIR="$(pwd)"
cd $SCHEMACRAWLER_DIR
# Gentoo Strikes Again!
# https://github.com/schemacrawler/SchemaCrawler/issues/394
_JAVA_OPTIONS=-Djava.io.tmpdir=. \
bash bin/schemacrawler.sh \
--user= \
--password= \
--database "$ORIG_DIR/deck_builder.sqlite3" \
--server sqlite \
--weak-associations=true \
-i standard \
-c schema \
-o ~/www/db.png
chown :www-data ~/www/db.png
}
function main(){
# backup_database
psychiq_up
collectd_up
mariadb_up
redis_up
}
if [ $# -lt 1 ]
then
message 1 "Usage: $0 [main | backup_database | psychiq_up | collectd_up | mariadb_up | redis_up | schemacrawler]"
else
"$1" "$@"
fi