diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index cb35ace0..f6181785 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -6,6 +6,10 @@ if [ -f tmp/pids/server.pid ]; then rm tmp/pids/server.pid fi +if [ ! -z "${FOODSOFT_DB_PREFIX}" ] || [ ! -z "${FOODSOFT_DB_PREFIX_FILE}" ]; then + FOODSOFT_FOODCOOPS=`BUNDLE_CONFIG=/dev/null bundle exec ruby script/list_databases` +fi + if [ -e app_config.defaults.yml ] ; then cat app_config.defaults.yml > config/app_config.yml diff --git a/script/list_databases b/script/list_databases new file mode 100755 index 00000000..86d07ef1 --- /dev/null +++ b/script/list_databases @@ -0,0 +1,22 @@ +require 'mysql2' + +def get_env_or_file_content(name) + ENV.fetch('FOODSOFT_DB_' + name) do |full_name| + file_name = ENV.fetch(full_name + '_FILE', nil) + file_name ? File.read(file_name).strip : '' + end +end + +prefix = get_env_or_file_content('PREFIX') +host = get_env_or_file_content('HOST') +database = get_env_or_file_content('NAME') +username = get_env_or_file_content('USER') +password = get_env_or_file_content('PASSWORD') + +client = Mysql2::Client.new(host: host, database: database, username: username, password: password) +escaped_prefix = client.escape(prefix) +results = client.query("SELECT schema_name FROM information_schema.schemata WHERE schema_name LIKE '#{escaped_prefix}%'") +results.each do |row| + puts row["schema_name"][prefix.length..] +end +client.close