#!/bin/bash set -e set -o pipefail wp_config_get() { sed -e 's/\r//g' -ne \ "s/^define *( *'$1' *, *'\([^']*\)' *) *; *$/\1/p" \ < "$wp_config" } wp_config_table_prefix_get() { sed -e 's/\r//g' -ne \ "s/^\$table_prefix *= *'\\([^']*\\)' *; *$/\\1/p" \ < "$wp_config" } find_wp_config() { # If input contains a slash then it is an absolute path. # Otherwise it is a subdirectory or subvolume of . case "$1" in */*) ;; *) set -- /srv/"$1" ;; esac for wp_config in \ "$1" \ "$1"/wp-config.php \ "$1"/wordpress/wp-config.php \ "$1"/public_html/wp-config.php \ "$1"/public_html/wordpress/wp-config.php do if [ -f "$wp_config" ] then return fi done false } if [ $# = 0 ] then prefix=/srv/ suffix=/public_html json='[ { site: $SITE, wordpress_config: . } ]' for SITE in $prefix*$suffix do SITE=${SITE%$suffix} SITE=${SITE#$prefix} "$0" "$SITE" | jq --arg SITE "$SITE" "$json" done | jq -s add exit elif [ $# != 1 ] then exit -1 fi find_wp_config "$1" db_name=$(wp_config_get DB_NAME) [ "$db_name" ] db_host=$(wp_config_get DB_HOST) [ "$db_host" ] db_user=$(wp_config_get DB_USER) [ "$db_user" ] db_password=$(wp_config_get DB_PASSWORD) [ "$db_password" ] table_prefix=$(wp_config_table_prefix_get) jq -n \ --arg h "$db_host" \ --arg u "$db_user" \ --arg p "$db_password" \ --arg n "$db_name" \ --arg t "$table_prefix" \ '{ db_host: $h , db_user: $u , db_password: $p , db_name: $n , table_prefix: $t }'