|
| 1 | +#!/usr/bin/env bash |
| 2 | + |
| 3 | +# Environment variables |
| 4 | +: "${DB_TYPE:=sqlite}" |
| 5 | + |
| 6 | +if [[ "$DB_TYPE" == "postgres" ]]; then |
| 7 | + echo "Postgres selected as database type, starting configuration..." |
| 8 | + |
| 9 | + CONFIG_FILE="./config.xml" # Adjust path if needed |
| 10 | + if [[ ! -f "$CONFIG_FILE" ]]; then |
| 11 | + echo "Missing config file, running Whisparr to ensure configfile can be accessed" |
| 12 | + |
| 13 | + /app/bin/Whisparr --nobrowser --data=/config "$@" & |
| 14 | + WHISPARR_PID=$! |
| 15 | + |
| 16 | + timeout=60 |
| 17 | + count=0 |
| 18 | + while [[ ! -f "$CONFIG_FILE" ]]; do |
| 19 | + sleep 5 |
| 20 | + ((count+=5)) |
| 21 | + if [[ $count -ge $timeout ]]; then |
| 22 | + echo "Timeout waiting for config.xml" |
| 23 | + kill "$WHISPARR_PID" |
| 24 | + exit 1 |
| 25 | + fi |
| 26 | + done |
| 27 | + |
| 28 | + echo "Config file present, stopping Whisparr..." |
| 29 | + kill "$WHISPARR_PID" |
| 30 | + fi |
| 31 | + |
| 32 | + : "${DB_USER:?Need to set DB_USER}" |
| 33 | + : "${DB_PASSWORD:?Need to set DB_PASSWORD}" |
| 34 | + : "${DB_DATABASE:=whisparr-main}" |
| 35 | + : "${DB_LOGSDB:=whisparr-log}" |
| 36 | + : "${DB_HOST:=postgres}" |
| 37 | + : "${DB_PORT:=5432}" |
| 38 | + |
| 39 | + echo "Updating Whisparr config.xml for PostgreSQL..." |
| 40 | + cp -rf "$CONFIG_FILE" "${CONFIG_FILE}.bak" |
| 41 | + |
| 42 | + xmlstarlet ed -L \ |
| 43 | + -u "/Config/PostgresUser" -v "$DB_USER" \ |
| 44 | + -u "/Config/PostgresPassword" -v "$DB_PASSWORD" \ |
| 45 | + -u "/Config/PostgresHost" -v "$DB_HOST" \ |
| 46 | + -u "/Config/PostgresPort" -v "$DB_PORT" \ |
| 47 | + -u "/Config/PostgresMainDb" -v "$DB_DATABASE" \ |
| 48 | + -u "/Config/PostgresLogDb" -v "$DB_LOGSDB" \ |
| 49 | + "$CONFIG_FILE" |
| 50 | + |
| 51 | + echo "Config.xml updated for PostgreSQL support" |
| 52 | +fi |
| 53 | + |
| 54 | +exec \ |
| 55 | + /app/bin/Whisparr \ |
| 56 | + --nobrowser \ |
| 57 | + --data=/config \ |
| 58 | + "$@" |
0 commit comments